美元.ajax发送文件格式数据和变量
$.ajax Sending File formdata along with variables
我正在尝试按照本教程中的步骤创建一个简单的jquery文件上传:http://net.tutsplus.com/tutorials/javascript-ajax/uploading-files-with-ajax/,它功能齐全,非常出色。然而,我希望对用户可以上传的图像有更多的控制和更多的安全,例如,我希望能够发送令牌。这是我的原始代码:
$('#images').change(function (evt) {
$('#response').text("Uploading . . .");
var amount = this.files.length;
var reader, file;
alert(formdata);
for (var i = 0; i < amount; i++ ) {
file = this.files[i];
if (!!file.type.match(/image.*/)) {
if ( window.FileReader ) {
reader = new FileReader();
reader.onloadend = function (e) {
appendUploadedPic(e.target.result, file.fileName);
};
reader.readAsDataURL(file);
}
if (formdata) {
formdata.append("images[]", file);
}
}
}
if (formdata) {
$.ajax({
url: "php/upload.php",
type: "POST",
data: formdata,
dataType:'json',
processData: false,
contentType: false,
success: function (res) {
$('#response').html(res['image_name']);
}
});
}
});
和PHP到目前为止都很简单
foreach ($_FILES["images"]["error"] as $key => $error) {
if ($error == UPLOAD_ERR_OK) {
$name = $_FILES["images"]["name"][$key];
move_uploaded_file( $_FILES["images"]["tmp_name"][$key], "../members/" . $_FILES['images']['name'][$key]);
}
}
$respond = array("filename" => $_FILES["images"]["name"][0], "type" => "image");
echo json_encode($respond);
现在我要做的是这个
$.ajax({
url: "php/upload.php",
type: "POST",
data: 'token=someToken&code=upload&data='+formdata,
dataType:'json',
processData: false,
contentType: false,
success: function (res) {
$('#response').html(res);
}
});
有可能吗?如果是,我如何从php中读取它?它是一个post方法,我通常使用$_POST['code']和$_POST'token'],但我该如何读取图像的formdata对象?
如果formdata
是用FormData
创建的,您可以像这样添加额外的字段:
formdata.append(name, value);
所以,如果你想添加一个标记字段和一个代码字段,它是:
if (formdata) {
formdata.append("images[]", file);
formdata.append("token", "someToken");
formdata.append("code", "someCode");
}
然而,你应该意识到这种上传方法不会被很多浏览器支持,比如IE6-IE9,我相信它代表了大约一半的互联网用户。
我建议使用一个插件来检测浏览器的支持,并使用最好的方法。我写这个插件就是为了这个目的:
https://github.com/LPology/Simple-Ajax-Uploader顶部有一个演示的链接,可以尝试一下。如果你决定使用它,遇到任何问题,只要告诉我,我可以帮助你。好运。
相关文章:
- 当JSON数据=变量时,需要执行循环
- 如何将数据/变量从file_controller.rb传递到application.js
- 当移动到“外部”版本时,“内部”成功 AJAX 中的“数据”变量应该更改为什么
- 从 ajax jQuery 中的数据变量中获取属性
- 将脚本属性(数据变量)传递到 head.js
- 2 个数据变量的 mrender 不起作用
- 如何在 ng-repeat 过滤器中传递 HoDjango views.py 上下文数据变量
- 以简单的方式将多个数据变量传递给 AJAX 函数
- 如何从每个带有类的元素中获取数据变量
- 根据数据变量的d3网络图的颜色链接
- 如何在不同的网站之间共享数据变量或本地存储?iframe?postMessage
- 将数据变量从PHP传递到jquery ui对话框
- 数据变量没有从Vue.js中的监视器上的计算属性更新
- 弹出窗口数据变量传递
- 如何使用jquery发布输入数据变量
- vue .js:如何在.vue模板文件中的vue方法中设置数据变量
- JSON jQuery数据变量
- 从onclick()提取数据变量
- 忽略下划线模板中未定义的数据/变量
- 如何使用php数据变量创建条形图