Post表单字段+文件使用xhr,并重建服务器端
Post form fields + file using xhr, and reconstruct server side
我试图通过一个XHR请求提交一个HTML表单的数据到一个php脚本。
我遇到了一个问题的代码,但我怀疑有东西的后端,但可能是做一些不正确的javascript,如下所示:
var fd = new FormData();
fd.append("title", $('#uploadVidTitle').val());
fd.append("proj", $('#uploadVidProject').val());
fd.append("desc", $('#uploadVidDesc').val());
fd.append("action", $('#uploadAction').val());
console.log(fd);
fd.append("uploadFile", document.getElementById('videoUpload').files[0]);
var xhr = new XMLHttpRequest();
xhr.upload.addEventListener("progress", uploadProgress, false);
xhr.addEventListener("load", uploadComplete, false);
xhr.addEventListener("error", uploadFailed, false);
xhr.addEventListener("abort", uploadCanceled, false);
xhr.open("POST", "actions.php", false);
xhr.send(fd);
目前在php代码中,我通过$_POST["name"]
方法获得表单内容,但是不能使用$_FILES["name"]
检索文件内容。
我认为问题在服务器端。泰这个
foreach ($_FILES as $id => $val)
if (isset($_FILES[$id]['name']) && $_FILES[$id]['name'] != '')
{
//process files
使用$_FILES[$id]['name']检索文件名对我来说很有效。
您可能需要在发送请求之前尝试设置一些请求头:
xhr。setRequestHeader("内容类型","应用程序/x-www-form-urlencoded");
或
xhr。setRequestHeader("内容类型","多部分/格式");
POST请求发送后,还要检查$_FILES超全局变量,看看是否有文件可以从它访问
相关文章:
- 中止POST XHR可靠
- Dojo XHR将200 OK视为错误
- Chrome扩展:XHR后关闭窗口
- XHR不适用于聊天应用程序
- 是否可以缓存可下载的文件,并在XHR和非XHR请求之间共享该缓存
- 通过XHR请求将MYSQL数组从PHP返回到Javascript
- 将GET参数添加到q.io.xhr
- 如何在重建URL后从URL中传递过滤值,目的是使用Angular2和Typescript实现无限滚动
- Winjs.xhr、Visual Studio和脱机服务器
- 访问通过XHR.onreadystatechange回调中的XHR.send(data)发送的数据
- 自动重建闭包大豆模板
- 如何检索AMD的XHR响应代码(+时间戳)'大型Dojo
- 正在发送请求中包含数组的qx.io.request.Xhr请求
- XHR请求的CSRF预防
- onReadyStateChange未在XHR请求的IE中激发
- 在浏览器刷新时保存XHR渲染状态
- 循环更改值与数组重建的对象数组
- Testing XHR with Jest
- 终止所有正在进行的XHR请求
- Post表单字段+文件使用xhr,并重建服务器端