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 ...
随机推荐
- Python练手例子(10)
55.学习使用按位取反~. 程序分析:~0=1; ~1=0; (1)先使a右移4位. (2)设置一个低4位全为1,其余全为0的数.可用~(~0<<4) (3)将上面二者进行&运算. ...
- LeetCode编程训练 - 合并查找(Union Find)
Union Find算法基础 Union Find算法用于处理集合的合并和查询问题,其定义了两个用于并查集的操作: Find: 确定元素属于哪一个子集,或判断两个元素是否属于同一子集 Union: 将 ...
- dattime和timestamp的异同
相同点: 1)都可以用来表示YYYY-MM-DD HH:MM:SS[.FRACTION]的时间; 不同点: 1)两者的存储方式不一样 a)timestamp他把客户端插入的时间从当前时区转化为UTC( ...
- Android OpenGL ES 开发(四): OpenGL ES 绘制形状
在上文中,我们使用OpenGL定义了能够被绘制出来的形状了,现在我们想绘制出来它们.使用OpenGLES 2.0来绘制形状会比你想象的需要更多的代码.因为OpenGL的API提供了大量的对渲染管线的控 ...
- [Swift]LeetCode86. 分隔链表 | Partition List
Given a linked list and a value x, partition it such that all nodes less than x come before nodes gr ...
- [Swift]LeetCode221. 最大正方形 | Maximal Square
Given a 2D binary matrix filled with 0's and 1's, find the largest square containing only 1's and re ...
- [Swift]LeetCode435. 无重叠区间 | Non-overlapping Intervals
Given a collection of intervals, find the minimum number of intervals you need to remove to make the ...
- HTTP/3 简介
前言 HTTP 2.0是由谷歌SPDY进化而来,现有的实现基本都是走SSL(说是可以不用SSL,但基本没这么干的),传输层使用TCP.HTTP 3.0是由谷歌QUIC进化出来的,QUIC没有大动HTT ...
- centos7中安装、配置、验证、卸载redis
本文介绍在centos7中安装.配置.验证.卸载redis等操作,以及在使用redis中的一些注意事项. 一 安装redis 1 创建redis的安装目录 利用以下命令,切换到/usr/local路径 ...
- 针对 Ocelot 网关的性能测试
一.背景 目前我们项目是采用的 Ocelot 作为 API 网关,并且在其基础上结合 IdentityServer4 开发了一套 API 开放平台.由于部分项目是基于 ABP 框架进行开发的,接口的平 ...