如果你依賴於支持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