javascript - JS 文件上传问题
问题描述
问题:1、图片可以转成base64上传,为什么Excel,pdf等不能转base64?2、通过XMLHttpRequest上传文件,文件放入FormData中,但怎么给文件绑定标记,比如说,怎么知道这个文件是我当前用户的?3、大家有没有好的js文件上传解决方案?
问题解答
回答1:在现代浏览器下,可使用 html5 相关API实现。我暂时想到这几个 Blob FileReader btoa 具体的就需要你去查文档了
FormData可以用append添加额外的字段。 这里你需要放开思路,一个字段最终代表着传递到后台的一个参数,这个参数其实是很抽象的一个概念,具体取决与你前台跟后台的约定。 举个例子,我可以在最后要发送请求的时候构造一个额外对象(它的字段取值要跟后台商量),添加到FormData中,发送到服务端。
var meta = { name:'', time:'', data:[]} formData.append('meta', JSON.stringify(meta));
服务端最后再将这个字段反序列化成对象,取得里面的值。
最后,js文件上传是HTML5后提供的功能所以有兼容性的问题,说白了也就是那几个新增API的使用,去 MDN上把相关文档、demo 看一下就差不多了
回答2:1.pdf应该是可以转base64的,excel没测试过,但excel可以转为Blob类型,理论上也应该可以转为base6。
2.FormData再加一个参数作为文件的唯一标记,一起传到后端就行了。
回答3:第1点我不太清楚,第2点需要通过session,靠服务端
回答4:第二点可以多给formdata增加一个input字段
相关文章:
1. Android明明可以直接分享,为什么还要用微信开放平台、微博开放平台的sdk?2. javascript - 单页面应用怎么监听ios微信返回键?3. angular.js - 在ionic下,利用javascript导入百度地图,pc端可以显示,移动端无法显示4. nginx - 关于javaweb项目瘦身问题,前期开发后,发现项目占用存贮空间太大,差不多1.2个G,怎么实现瘦身,动态页面主要是jsp。5. css3 - 求教个问题,关于响应式布局,跟ipad有关,媒体查询失效?6. javascript - 如何保证几个ajax提交成功;7. css - 浏览器缩放分辨率为什么布局会变8. angular.js - 百度支持_escaped_fragment_吗?9. vue.js - vue apache 代理设置10. 我在centos容器里安装docker,也就是在容器里安装容器,报错了?
