① js 前端上传多张图片
可以用webuploader插件,上传成功后,服务端返回图片地址,客户端<img>显示图片
X关闭按钮这个得自己用css样式控制,点击X后,服务端删除图片,然后前端移除该X掉的图片
② 如何实现前端图片拖拽
图片上传加拖拽插件:网页链接
在vue项目入口文件index.js(main.js),或者在调用组件中引入如下代码:
importVueUploadDragfrom'vue-upload-drag'
Vue.use(VueUploadDrag)
根据你的需求在调用组件代码中增加:
<template><maple-uploadv-model="fileList":config="config"
@onError="onError" @onSuccess="onSuccess"
/></template>
onError ({ err, file, uid }) { // 上传失败,会自动把图片移除,建议给提示
alert('图片上传失败')
console.log(err, file, uid)
},
onSuccess ({res, file, _uid , exChangeUrl, handleRemove}) { // 上传成功,请必须接受onSuccess方法
console.log(res, file, _uid , exChangeUrl, handleRemove)
if (res.code === '0') { // res为后端返回数据,举例而已
const {url} = res.obj
exChangeUrl(_uid, url); // url为后端返回的图片链接值,uid是onSuccess传入的
} else {
alert('图片上传失败')
handleRemove(_uid) // 删除图片
}
}
③ 前端上传文件的几种方法
第一种:经典的form和input上传。
设置form的aciton为后端页面,enctype="multipart/form-data",type=‘post’
<formaction='http://www.ty2y.com/'enctype="multipart/form-data"type='post'><inputtype='file'><inputtype='hidden'name='userid'><inputtype='hidden'name='signature'><button>提交</button></form>
使用input选择文件,设置好其他input的值,点击提交,将文件数据及签名等认证信息发送到form设置的action对应的页面,浏览器也会跳转到该页面。触发form表单提交数据的方式有2种,一种是在页面上点击button按钮或<input
type='submit'>按钮触发,第二种是在js中执行form.submit()方法。
优点:使用简单方便,兼容性好,基本所有浏览器都支持。
缺点:1. 提交数据后页面会跳转(下面会讲如何禁止页面跳转)。
2.因为是浏览器发起的请求,不是一个ajax,所以前端无法知道什么时候上传结束。
3. form表单里发送除文件外的数据,一般是新建一个type=hidden的input,value=‘需要传的数据’,每发送一个数据就需要一个input,一旦多了就会使得dom看起来比较冗余。
小技巧:
form表单提交数据后会自动跳转到action指定的页面,为了禁止页面跳转,可以在页面中新建一个空的ifame,比如name='upload',然后设置form的target="Uploader",form有一个target的属性,规定在何处打开action,这样form提交数据后就会仍停留在当前页。代码如下:
<formaction='http://www.jshaman.com/'enctype="multipart/form-data"type='post'target="uploader1"><inputtype='file'><button>提交</button></form><ifrmaename='upload'id='uploader1'></iframe>
这样写的另一个好处是,可以知道什么时候上传完成并接收到后端的回调结果。比如上面这个例子,文件数据发送到了
'uploadFile.php',假设该页面处理完数据后返回了一个地址,该地址会被写入到之前的iframe中。所以在ifame的onload函数触发时,也就是上传完成后,可以在iframe中读取到后端返回的数据。
variframe=document.getElementById('upload1');
iframe.onload=function(){
vardoc=window.frames['uploader1'].document;varpre=doc.getElementsByTagName('pre');varobj=JSON.parse(pre[0].innerHTML);
}
使用这种方法时需要注意,iframe有跨域限制,创建出来的iframe的地址如果和当前页面地址不同源,会报错。这种情况下,建议大家在iframe的onload函数中,再次向后端请求一个接口获取文件地址,而不是直接去iframe里读取。或者返回这样的数据。
<scripttype="text/javascript">window.top.window[callback](data)</script>
callback是和前端约定好的名字,上传完成后触发该函数并返回后端数据。
第二种:使用formData上传。
用js构造form表单的数据,简单高效,但最低只兼容IE10,所以需要兼容IE9的童鞋们就略过这个方法吧。
html:
<inputtype='file'>
js:
varformData=newFormData();
formData.append("userid",userid);
formData.append("signature",signature);
formData.append("file",file);//file是blob数据//再用ajax发送formData到服务器即可,
注意一定要是post方式上传
说明:第一种方法提到了创建多个type=‘hidden’的input来发送签名数据,这儿可以用formData.append方法来代替该操作,避免了dom中有多个input的情况出现。最后将file数据也append到formData发送到服务器即可完成上传。
优点:由于这种方式是ajax上传,可以准确知道什么时候上传完成,也可以方便地接收到回调数据。
缺点:兼容性差
第三种:使用fileReader读取文件数据进行上传。
HTML5的新api,兼容性也不是特别好,只兼容到了IE10。
varfr=newFileReader();
fr.readAsDataURL(file);
fr.onload=function(event){vardata=event.target.result;//此处获得的data是base64格式的数据img.src=data;
ajax(url,{data},function(){})
}
上面获得的data可以用来实现图片上传前的本地预览,也可以用来发送base64数据给后端然后返回该数据块对应的地址。
优点:同第二种
缺点:一次性发送大量的base64数据会导致浏览器卡顿,服务器端接收这样的数据可能也会出现问题。
④ web前端上传图片的几种方法
下面给你介绍3种web前端上传图片的方法:
1.表单上传
最传统的图片上传方式是form表单上传,使用form表单的input[type=”file”]控件,打开系统的文件选择对话框,从而达到选择文件并上传的目的。
ajax无刷新上传
Ajax无刷新上传的方式,本质上与表单上传无异,只是把表单里的内容提出来采用ajax提交,并且由前端决定请求结果回传后的展示结果。
3.各类插件上传
当上传的需求要求可预览、显示上传进度、中断上传过程、大文件分片上传等等,这时传统的表单上传很难实现这些功能,我们可以借助现有插件完成。
如网络上传插件Web Uploader、jQuery图片预览插件imgPreview 、拖拽上传与图像预览插件Dropzone.js等等,大家可根据项目实际需求选择适合的插件。
⑤ 前端怎么传图片给后台(java)
你可以现在前台控制台打印一下base64的流,看看是否获取图片成功。如果成功再去后台看看获取的文件信息,haerd中是否有数据。
然后就是你没有后台代码,这里也不好判断是否是接收问题
⑥ ASP.NET 网页聊天室,如何实现发送图片
UEditor是由网络web前端研发部开发所见即所得富文本web编辑器,具有轻量,可定制,注重用户体验等特点,开源基于MIT协议,允许自由使用和修改代码...
⑦ Javascript如何实现上传图片的功能
你应该用asp、php、jsp、.net、pythone、ruby、node.js之类的东西写一个运行在服务器上的后台程序。
你写的js是在浏览器前端运行的,浏览器上传图片是往服务器端程序发送数据,前端运行的js是没这个能力的。
⑧ 三层架构多个ui前端的情况下,图片如何共享呢
有一个专门放图片的服务器集群。通过域名+相对URL的配置来实现共享。
比如你在网站后台上传了一张图片,首选它会把这张图片的原文件保存在一个文件夹下,然后再用这张图片生成各种大小的锁缩略图,打水印等。你上传一张2MB的手机照片。它会生成40*40,100*100,320*480......,等等。图片会用相对路径+缩略图尺寸的方式来命名,并以字符串形似存入数据库。这些图片甚至会备份几份,以免特殊情况下紧急访问。
在网站上就可以配置域名来访问了。如: image1.你的域名+URL。
在APP通过HTTP访问, image2.你的域名+URL。
在winform上可以使用bit64来显示, image3.你的域名+URL。
有些服务器每天接收3亿张图片上传。硬盘大小是有限的,服务器可以继续加,image1,image2,image3......域名也是可以继续解析的。
还有其他一些方案,大同小异。访问图片服务器,返回图片或bit64.
⑨ 类似于这样的图片展示,前端是如何做的,只截取图片的中间部分
我不知道自己理解对没?只是屏幕上的截屏?
窗口调整合适大小,QQ随意打开一个对话框,用截屏按钮。或者电脑右上角PrtSc按钮全屏复制,打开windows附件自带的画图板,粘贴,即可得到图片,编辑之。