XHR.send(文件+参数)? [英] XHR.send(file + params)?

查看:4083
本文介绍了XHR.send(文件+参数)?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图找出如何在同一XMLHtt prequest发送文件和paramaters。这可能吗?

I am trying to figure out how to send a file and paramaters within the same XMLHttpRequest. Is this possible?

很显然,我可以做xhr.send(文件+参数)或XHR。(文件,则params)。而且我不认为我可以设置两个不同的请求头要做到这一点......

Obviously I can do xhr.send(file+params) or xhr.(file,params). And I don't think I can set two different request headers to do this...

xhr.setRequestHead('X_FILENAME', file.name)
xhr.send(file);
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.send(params);

有没有一些方法来发送PARAMS而不必使用GET或二次XHR请求?

Is there some way to send the params without having to use GET, or a secondary xhr request?

推荐答案

如果你依赖于浏览器,支持 FORMDATA ,您可以使用下面的code(JavaScript的):

If you rely on browser which supports FormData, you can use the code below (JavaScript):

var formData = new FormData();
formData.append('param1', 'myParam');
formData.append('param2', 12345); 
formData.append('uploadDir', 'public-data');  
formData.append('myfile', file);

xhr.send(formData);

然后,在你的服务器端,您可以使用此code(PHP)访问您的变量:

Then, on your server side you can have access to your variables by using this code (PHP):

<?
  $param1 = $_POST['param1']; //myParam
  $param2 = $_POST['param2']; //12345
  $uploaddir = $_POST['uploadDir']; //public-data
  $fileName = $_FILES['myfile']['name'];
  $fileZise = $_FILES['myfile']['size'];
  $uploaddir = getcwd().DIRECTORY_SEPARATOR.$uploaddir.DIRECTORY_SEPARATOR;
  $uploadfile = $uploaddir.basename($fileName);       
  move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile);
  echo $fileName.' ['.$fileZise.'] was uploaded successfully!';
?>

要获得 $ _ FILES ['myfile的'] ,使用的var_dump($ _ FILES [MYFILE])

这篇关于XHR.send(文件+参数)?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆