formdata文件及参数php,关于php:$。ajax发送文件formdata和变量

我正尝试按照本教程中的步骤创建一个简单的jquery文件上传:http://net.tutspus.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'],但是我如何读取images 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

顶部有一个演示链接,可供试用。如果你决定使用它并遇到任何问题,我和我就可以帮你解决。祝你好运。

我如何在PHP中读取它?

就像$token=$u post['token']、$code=$u post['code']和images$u files['images']['tmpu name'];-我这样做是为了练习,我确实有一个对ie的回退,但是你的插件也很好

是的,没错。$_POST['token']和$_POST['code']。我还建议阅读以下内容:php.net/manual/en/features.file-upload.php注释中也包含一些好的信息。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值