今天问题高产似母猪...
通过下列代码,我已经获取了 filemeta 也就是被选中的那个文件。
$('#coverfile').on('change', '', function() { var filemeta = $('#coverfile').prop('files')[0]; });
然后我有一个btn按钮,需要通过点击后ajax的方式传递这个被选中的图片,然后在php文件中进行处理。
但是我不知道应该怎么去传递这个获取过来的filemeta
本来我想传递base64过去的,因为预览图片我使用的是转换为base64进行预览的,但是这个转换后的字节太大了,php文件字节报500错误,所以我得换个办法...
回复内容: 今天问题高产似母猪...
通过下列代码,我已经获取了 filemeta 也就是被选中的那个文件。
$('#coverfile').on('change', '', function() { var filemeta = $('#coverfile').prop('files')[0]; });
然后我有一个btn按钮,需要通过点击后ajax的方式传递这个被选中的图片,然后在php文件中进行处理。
但是我不知道应该怎么去传递这个获取过来的filemeta
本来我想传递base64过去的,因为预览图片我使用的是转换为base64进行预览的,但是这个转换后的字节太大了,php文件字节报500错误,所以我得换个办法...
用formdata对象提交。注意ie只有版本10以上支持。
formdata对象怎么来呢,有两种方法。
方法一:表单就是formdatahtml代码:
js代码:
var formelement = document.getelementbyid(fileform);//jquery可以像这样://var formelememt = $(#fileform)[0];var formdata = new formdata(formelement);
方法二:自己构造html代码:
js代码:
var fileinput = document. getelementbyid(file);//用jquery可以这样://var fileinput=$(#file)[0];var file = fileinput.files[0]; //获得file对象(也就是你那个filemeta),这里文件是单选的,如果是多选的需要遍历fileinput.files属性来获取每一个文件var formdata = new formdata();formdata.append(file, file); //formdata对象的append方法第一个参数相当于input的name属性,第二个参数就是value,可以是file对象
用jquery发送请求$.ajax({ type: post, //必须post url: http://example.com, //接收请求的url processdata: false, //必须设置 contenttype: false, //必须设置 data: formdata //直接把formdata对象作为data属性的值发送 //其他参数参数自行设置})
参考mdn是个好东西,要学会用
https://developer.mozilla.org/zh-cn/docs/web/guide/using_formdata_objects