如果你依赖于支持FormData
浏览器,你可以使用下面的代码(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);
然后,在你的服务器端,您可以通过访问您的变量这个代码(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"])
你可能不得不使用FormData https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest/FormData – 2013-03-05 07:44:12
也请参考http://stackoverflow.com/questions/5602021/submitting-a-html-form -with-ajax-that-includes-a-file-input和http://stackoverflow.com/questions/6974684/how-to-send-formdata-objects-with-ajax-requests-in-jquery – 2013-03-05 07:45:21
@ Charles:你如何通过XHR发送文件?你是通过File API读取它的客户端,还是...? (这很重要,因为如果你通过File API读取它的客户端,那么它只是另一个参数......) – 2013-03-05 07:49:56