XHR.send(文件+参数)? [英] XHR.send(file + params)?
问题描述
我试图找出如何在同一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])$ C的所有参数$ C>
这篇关于XHR.send(文件+参数)?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!