web前端图片上传
图片上传有很多种形式,但是听说ios只能传字符串,所以为了安卓、ios和web能用一个接口上传图片,采用了基于base64 的方法上传图片。
下面是我的html
<div class="parn">
<h6>店铺宣传海报</h6>
<div class="img-div">
<img src="" class="add_img11" id="store_img">
<input type="file" class="files" onchange="updataimg(this)">
<div class="remarks">海报大小尽量限制在1M以内</div>
</div>
</div>
然后布局的话,大家就随意吧。最主要的就是img标签用来显示图片,我们这里的原理是这样的:先是图片上传,上传成功之后,后台给返回你上传图片的服务器地址,然后显示在这个img标签中。然后input是一个上传的标签,其中用updataimg这个函数来写上传的最主要的js代码;
这里是JS代码
function updataimg(fileObj){
var file_img = fileObj.files['0'];
//创建读取文件的对象
var reader = new FileReader();
//创建文件读取相关的变量
var imgFile;
//为文件读取成功设置事件
reader.onload=function(e) {
//alert('文件读取完成');
imgFile = e.target.result; //这里就已经是base64的格式了
//console.log(imgFile);
var newsIndex = imgFile.indexOf(",");
var news = imgFile.substr(parseInt(newsIndex + 1));
//console.log(news);
$.ajax({
type: "post",
url: base_url + "ZITAOHUI/upload/image",
data: {
"imageData": news
},
dataType: "json",
success: function(data) {
if(data.code == 1) {
var _url = data.extend.msg.fileUrl;
$('.add_img11').attr('src',_url);
placard = _url;
} else {
alert("上传失败,请刷新后重试");
}
},
error: function(error) {
}
});
};
//console.log(file_img.size);
if(file_img.size>1024*1024){
alert('图片大小大于1M,请压缩图片后重试');
}else{
//正式的读取文件
reader.readAsDataURL(file_img);
}
}
这里用一点需要注意的是41行的代码;用reader.readAsDataURL(file),根据大家编程经验也都能看出,就是调用FileReader类中的readAsDataURL方法,并把之前获取的file对象传进去。如果读取成功,则调用reader.onload事件。也就是说41行的代码是在8行的代码执行之前的,也就是为什么我们的对图片的大小判断要在这之前进行。
在代码的10行,我们获取的就已经是base64的代码结构了。然后12和13行的代码是为了把base64的前面的格式去掉;请看下面的两幅图(11行和14行的打印结果);


然后通过ajax上传,就能上传到服务器了。
web前端图片上传的更多相关文章
- web前端图片上传(3)--filereader
这篇文章主要是为了介绍一种文件上传的方式.当然文件中是包含图片的.如果大家仔细看我的第一篇web前端图片上传(1)就会知道,其实也是按照这种方式上传你的,但是由于上次时间比较紧张,没有详细的介绍今天的 ...
- web前端图片上传(2)
今天发现了一种ajax上传图片的方式,是以前没有用过的,首先来说下为什么要用这种方式.是因为原来后台是用的form表单的方式来提交表单数据的.但是觉得呢,这种方式不太好,因为要刷新页面,前台只用控制台 ...
- 七牛云存储的 Javascript Web 前端文件上传
因为我的个人网站 restran.net 已经启用,博客园的内容已经不再更新.请访问我的个人网站获取这篇文章的最新内容,七牛云存储的 Web 前端文件上传 七牛是不错的云存储产品,特别是有免费的配额可 ...
- Web Api 图片上传,在使用 Task.ContinueWith 变量无法赋值问题
细谈 Web Api 图片上传,在使用 Task.ContinueWith 变量无法赋值问题的解决办法! 在使用Asp.Net Web Api 图片上传接口的时候,到网上找了一些个例子,但大多数找 ...
- Asp.Net Core Web Api图片上传(一)集成MongoDB存储实例教程
Asp.Net Core Web Api图片上传及MongoDB存储实例教程(一) 图片或者文件上传相信大家在开发中应该都会用到吧,有的时候还要对图片生成缩略图.那么如何在Asp.Net Core W ...
- 细谈 Web Api 图片上传,在使用 Task.ContinueWith 变量无法赋值问题的解决办法!
在使用Asp.Net Web Api 图片上传接口的时候,到网上找了一些个例子,但大多数找到都是这个版本! [HttpPost] public Task<Hashtable> ImgUpl ...
- php $_FILES错误说明 以及图片前端图片上传失败。
我的另一个原文:https://blog.csdn.net/qq_36570464/article/details/80692241 今天被一个问题弄了好久, 先看代码: 前端: <form m ...
- java web开发 图片上传功能
基本思路在于,配置路径,然后用java I/O的api将图片上传到该目录下. String photoPath = ServletActionContext.getServletContext( ...
- Web App 图片上传编辑器
使用cropper.jqueryUpload插件.Jquery.src-dataurl-canvas-blob文件. @{ ViewBag.Title = "更新头像"; Layo ...
随机推荐
- CSS面试细节整理(一)
最近面试时候发现自己最熟悉的css确实开发中好多细节没注意到,为了防止在栽跟头,打算从头到底捋一遍咯 语法部分: 1.css几种选择器的写法 (1)h1 em {color:red;} (后代选择器) ...
- CSS文字的跑马灯特效
上学时同学有个来电带跑马灯的手机,可把我羡慕坏了,可等我买的起手机时,跑马灯不流行了,甚伤萝卜心! 今天就用CSS做个文字的跑马灯特效,缅怀一下本萝卜逝去的青春! 道具:会敲代码的巧手.七窍玲珑心.会 ...
- Android OpenSL ES 开发:Android OpenSL 录制 PCM 音频数据
一.实现说明 OpenSL ES的录音要比播放简单一些,在创建好引擎后,再创建好录音接口基本就可以录音了.在这里我们做的是流式录音,所以需要用至少2个buffer来缓存录制好的PCM数据,这里我们可以 ...
- .Net Core中Dapper的使用详解
Dapper 是一个轻量级ORM框架,在项目中如果对性能比较看中,Dapper是一个不错的选择.接下来我们就来看看如何在项目中使用Dapper. 1.安装Dapper 这里直接使用Nuget安装. ...
- [Swift]LeetCode275. H指数 II | H-Index II
Given an array of citations sorted in ascending order (each citation is a non-negative integer) of a ...
- [Swift]LeetCode701. 二叉搜索树中的插入操作 | Insert into a Binary Search Tree
Given the root node of a binary search tree (BST) and a value to be inserted into the tree, insert t ...
- [Swift]LeetCode754. 到达终点数字 | Reach a Number
You are standing at position 0 on an infinite number line. There is a goal at position target. On ea ...
- [Swift]LeetCode970.强整数 | Powerful Integers
Given two non-negative integers x and y, an integer is powerful if it is equal to x^i + y^j for some ...
- [Swift]LeetCode1027. 最长等差数列 | Longest Arithmetic Sequence
Given an array A of integers, return the length of the longest arithmetic subsequence in A. Recall t ...
- Python 的字符串
Python 的字符串 在最新的 Python 3 版本中,字符串是以 Unicode 编码的,也就是说,Python 的字符串支持多语言,例如: print('包含中文的 str') 对于单个字符的 ...