HTML:
<form id="confirmresourceform" enctype="multipart/form-data" method="post" style="display: none;">
<input id="uploadlecture" name="fileToUpload1" type="file" value="Upload Resources"/>
</form>
使用Javascript / Jquery的/ AJAX:
$("#submitchanges").on("click",function(){
//Upload files
var formData = new FormData(document.getElementById("confirmresourceform"));
formData.append('lecture', $('#uploadlecture')[0].files[0]);
$.ajax({
type: 'POST',
url: 'upload.php',
contentType: false,
processData: false,
data: formData,
success: function (data) {
console.log(data);
}
});
});
PHP(upload.php的):
echo $_FILES['lecture']['name'];
好的,所以我尝试使用ajax上传文件(点击div而不是使用提交表格的东西)。我已经得到jQuery将文件数据附加到formdata与关键'讲座'。目前upload.php脚本有一行来回显文件名。但是,当ajax运行并调用upload.php时,我收到以下错误:
未定义的索引:讲座 C:\ wamp \ www \ TheClass \ lesson_creator_page \ upload.php在线 4 的
我很确定我已经在formdata中定义了'讲座'并将formdata传递给了php。有什么我做错了,行formData.append('lecture', $('#uploadlecture')[0].files[0]);
是否正确?
答案 0 :(得分:1)
几个月前我遇到了同样的问题并通过“.ajaxFileUpload”执行以下操作解决了这个问题:
在你的jquery中,集合如下所示:
jQuery.ajaxFileUpload({
url : "upload.php",
secureurl : false,
fileElementId : "fileToUpload1",
dataType : 'json',
data : {
// if you have another data to pass in your phhp
},
success : function ()
{
},
error : function(){
}
});
答案 1 :(得分:1)
网上有很多关于此的文献。
使用Ajax进行文件上传的最佳方法是使用插件。以下是几个供您考虑的事项:
来自:How can I upload files asynchronously?
您可以从jQuery的插件网站搜索更多内容。
如果您不想使用插件,那么最好的办法就是使用iFrame。
您也可以使用javascript的文件API,但并非所有浏览器都支持。点击此处:https://developer.mozilla.org/en/docs/Web/API/File
编辑: 如果你想变得更加漂亮,你可以开发一个JAVA或SWF应用程序嵌入你的页面来做到这一点。