jQuery从零开始上传多个文件
jQuery multiple file upload from scratch
我正试图使用新的HTML5multiple属性在jQuery中实现一个多图像上传器。
我的代码如下:
<form action="file-upload.php" method="post" enctype="multipart/form-data">
<input name="userfiles" type="file" multiple="multiple">
</form>
我使用的JS代码取自这里关于SO的讨论,如下所示:
$('input[name=userfiles]').change(function() {
var names = [];
for (var i = 0; i < $(this).get(0).files.length; ++i) {
names.push($(this).get(0).files[i].name);
console.log(names[i]);
}
});
有了这个,我可以在控制台上打印我选择的文件名,但如果我需要获得这些文件的确切值()呢?我尝试将.name替换为.val(),但出现错误。
如果我想用$.ajax处理它们,我想我需要每个文件的fakepath。如果这是正确的,我如何在发送get请求的PHP文件中循环遍历它们,以便上传它们?
您可以使用HTML5 FormData API。https://developer.mozilla.org/en-US/docs/Web/Guide/Using_FormData_Objects
var form = new FormData();
for (var i = 0; i < $(this).get(0).files.length; ++i) {
form.append('userfiles[]', $(this).get(0).files[i]);
}
// send form data with ajax
$.ajax({
url: 'url',
type: "POST",
data: form
});
或者,如果您不能使用FormData,有一种方法可以本地发送:https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest#Submitting_forms_and_uploading_files
您不需要操作文件路径,在ajax调用中只需使用file并将其放入新的FormData 中
类似的东西:
$.ajax({
'type':'POST',
'data': (new FormData()).append('file', $(this).get(0).files[i])
请参阅HTML5多文件上传:通过AJAX 逐个上传
如果你使用jquery文件上传插件,你可以使用这个
<input class="fileupload" type="file" name="file">
和
$('.fileupload').each(function () {
$(this).fileupload({
//your code goes here
})
相关文章:
- 如何在android中使用phonegap将文件从一个文件夹移动/复制到另一个文件夹
- 将CSV文件从URL导入Node.js
- 如何将JS文件从其他文件夹链接到页面
- 将文件从应用程序文件夹复制到JQM/Phonegap应用程序中的根文件夹
- 在IntelliJ IDEA中,如何将JS文件从“;查找用法“;使用TypeScript时的结果
- jQuery Datepicker从日期开始设置默认值
- 将文件从Javascript传递到Java Uploader Applet
- 高图表,使Y轴从零开始
- jQuery从零开始上传多个文件
- javascript:检查鼠标是否按下并从零开始计数,x秒后重定向
- 创建并遍历一个在 JavaScript 中不从零开始的多维数组
- JQuery 从第二个零开始播放 html5 视频,但如果用户暂停视频,则保留当前帧
- 使用序号重命名文件 - 从文件夹中的最高数字开始索引
- 仅从客户端检测下载开始/文件传输的开始
- 防止面积图Y轴从零开始
- 编码JS下划线_.从零开始扩展
- Javascript秒表不是从零开始的
- 模式匹配,不是从零开始的
- JavaScript获得点击链接的正确从零开始的索引
- Javascript:从零开始对索引数组进行排序