我有一个 php 文件,它将文件保存到服务器上一个名为 upload 的文件夹中,它通过 ajax 请求接收文件,到目前为止一切正常,下一个要求是随文件一起发送一个字符串以指定上传文件夹和子文件夹像“Course/Math”这样的文件夹如何实现?
JS
$( document ).ready(function() {
$('#Upload').click(function(){
var formData = new FormData($('form')[0]);
$.ajax({
url: 'uploadFile.php',
type: 'POST',
xhr: function() {
var myXhr = $.ajaxSettings.xhr();
if(myXhr.upload){
myXhr.upload.addEventListener('progress',progressHandling, false);
}
return myXhr;
},
success: completeHandler,
data: formData,
cache: false,
contentType: false,
processData: false
});
});
var progressHandling = function(e){
if(e.lengthComputable){
var percent = Math.round((e.loaded / e.total) * 100);
$('#uploadprogress').css('width', percent+'%');
}
}
var completeHandler = function(data){
$('#message').text(data);
$('#uploadprogress').css('width', '0%');
$('#file').val('');
};
});
PHP
<?php
if ($_FILES["file"]["error"] > 0) {
} else {
move_uploaded_file($_FILES["file"]["tmp_name"],
"upload/" . $_FILES["file"]["name"]);
echo true;
}
?>
最佳答案
使用在ajax调用中发送表单数据的示例.serialize()
var formData = $('#myform').serialize;
$.ajax({
url: 'uploadFile.php',
type: 'POST',
xhr: function() {
var myXhr = $.ajaxSettings.xhr();
if(myXhr.upload){
myXhr.upload.addEventListener('progress',progressHandling, false);
}
return myXhr;
},
success: completeHandler,
data: formData,
cache: false,
contentType: false,
processData: false
});
如果你想添加一个字符串,只需使用如下:
var value = 'test';
var formData = $('#myform').serialize+"&newstring="+value;
更新
通过ajax无法上传文件。
您可以使用 IFrame 上传文件,无需刷新页面或AjaxFileUpload插件。
更多详细信息请参见 Answer .
还可以在此处提供一些详细说明:
关于javascript - 如何通过ajax请求将字符串和文件一起发送到php文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23535768/