FormData对象,似乎没有上传我的文件
FormData object, doesn't seem to be uploading my file...
我遵循这个指南使用aJax上传图像,主要是为了有一个进度条。但是由于某些原因,PHP脚本似乎没有接收到文件!
这是我的JavaScript:
function submitFile() {
var form = document.forms.namedItem("imageUpload");
var formData = new FormData(form);
var xhr = new XMLHttpRequest();
xhr.open("POST", "php/uploadImage.php", true);
xhr.onload = function(e) {
if (xhr.status == 200) {
console.log("uploaded!");
doc("imageResponse").innerHTML = xhr.responseText;
} else {
console.log("error!");
doc("imageResponse").innerHTML += "Error " + xhr.status + " occurred when trying to upload your file.<br '/>";
}
};
//Progress
/*
xhr.upload.onprogress = function(e) {
if (e.lengthComputable) {
var currentPercentage = Math.round(e.loaded / e.total * 100);
document.getElementById("imageUpload").innerHTML = "UPLOAD IMAGE " + currentPercentage + "%";
document.getElementById("imageUpload").style.backgroundSize = currentPercentage + "% 100%";
}
};
*/
//Send data
xhr.send(formData);
}
这里是我的PHP文件接收文件:
<?php
session_start();
print_r($_FILES);
?>
当前PHP文件返回一个空数组…它应该有我的档案!
Array ()
我设法修复了我的代码,这里是有相同问题的任何人的工作版本。我决定使用JavaScript创建一个新表单,并将文件字段值附加到这个新表单。
我这样做主要是为了我的情况。
function submitFile(file,buttonId) {
//Generate a new form
var f = document.createElement("form");
f.setAttribute("method", "POST");
f.setAttribute("enctype", "multipart/form-data");
//Create FormData Object
var formData = new FormData(f);
//Append file
formData.append("image", file.files[0], "image.jpg");
var xhr = new XMLHttpRequest();
xhr.open("POST", "php/uploadImage.php", true);
xhr.onload = function(e) {
if (xhr.status == 200) {
document.getElementById(buttonId).innerHTML = "UPLOAD COMPLETE";
//console.log("uploaded!");
} else {
//console.log("error!");
alert("Error " + xhr.status + " occurred when trying to upload your file");
}
};
//Progress
xhr.upload.onprogress = function(e) {
if (e.lengthComputable) {
var currentPercentage = Math.round(e.loaded / e.total * 100)-1;
document.getElementById(buttonId).innerHTML = "UPLOAD IMAGE " + currentPercentage + "%";
document.getElementById(buttonId).style.backgroundSize = (currentPercentage+1) + "% 100%";
if (currentPercentage==99) {
document.getElementById(buttonId).innerHTML = "Processing image";
}
}
};
//Send data
xhr.send(formData);
}
相关文章:
- 我无法在操作方法中将我的文件传递给 httppostedfilebase
- 如何在我的文件中的 MVC5 中使用完整日历
- 为什么注释会影响我的文件的逻辑
- 如何将鼠标离开添加到我的文件中?以及我的代码会是什么样子
- Phonegap zip插件删除我的文件
- 当我试图将js脚本包含在head部分时,它不会包含在我的文件中
- 为什么不是't我的文件观察程序正在触发
- 如何告诉sencha cmd停止混淆我的文件
- 如何使node.js仅当我的文件是正在运行的文件时才执行某些代码
- 如何使照片的链接添加到我的文件中,并自动继续使用JavaScript
- 我如何给我的文件直接访问Hapi (Node.js)服务器
- 我如何使用meteor和collectionfs文件系统为我的文件指定路径和文件名?
- FormData对象,似乎没有上传我的文件
- 为什么我的文件数据在传输中丢失
- 我如何使用量角器和我的文件配置等待元素出现?
- 我如何修改别人分享给我的文件,比如电子表格
- 为什么我的文件在公共文件夹得到404
- 互联网浏览器-查找“;我的文件”;带有javascript的路径
- 我想在弹出框中预览我的文件
- Javascript Intercepted”;Ctrl+O”;不打开“我的文件”对话框