【发布时间】:2012-02-17 23:43:56
【问题描述】:
我在某处获得了此代码,无需刷新浏览器即可上传图片。但是我不喜欢上传文件,所以我决定使用以前使用的旧文件。问题是它从 javascript 文件发送一个数组而不是一个字符串(它打算发送多个文件而不是只发送一个文件)。下面是创建数组的代码:
input.addEventListener("change", function (evt) {
document.getElementById("response").innerHTML = "Loading . . ."
var i = 0, len = this.files.length, img, reader, file;
for ( ; i < len; i++ ) {
file = this.files[i];
if (formdata) {
formdata.append("uploaded_file[]", file);
} } }
if (formdata) {
$.ajax({
url: "img_upload.php",
type: "POST",
data: formdata,
processData: false,
contentType: false
}).done(function (res) {
/* *** show uploaded item *** */
/* *** show response *** */
});
}
我的Javascript知识真的很薄弱,我不知道如何修改此代码以发送上传的文件本身而不是数组。
我独立尝试了这些,但没有一个起作用(send_img 是表单名称/id):
formdata = document.send_img.uploaded_file.value;
formdata = document.getElementById("uploaded_file");
formdata = new formdata ($('#send_img'));
formData = $('#send_img').serialize();
formdata.replaceWith("uploaded_file[]", file);
我还尝试消除 for 以使用相同的键 (0),但它不起作用。
img_upload.php 的精简代码是:
$fileName = $target . $_FILES["uploaded_file"]["name"];
$fileTmpLoc = $_FILES["uploaded_file"]["tmp_name"];
$fileName = $new_name . "." . $fileExt;
move_uploaded_file($fileTmpLoc, "images/images/temp/$fileName");
如何仅在一个字符串中发送上传的文件(或标题或应发送的任何内容),并且在添加第二个文件的情况下,替换第一个文件而不是在数组中创建第二个值?
【问题讨论】:
标签: jquery file-upload ajax-forms