2015-10-23 72 views
0

我已經嘗試了最近3個小時的所有建議解決方案,但都沒有爲我工作。請記住,我對ajax非常陌生。如何使用Ajax將文件上傳到php腳本使用XAMPP

這裏是我的Ajax代碼:

var formData = new FormData(); 
formData.append('file', $('#commercialAnimation')[0].files[0]); 


$.ajax({ 

url : 'includes/upload.php', 
    type : 'POST', 
    data : formData, 
    processData: false, // tell jQuery not to process the data 
    contentType: false, // tell jQuery not to set contentType 
    success : function(data) { 
     console.log(data); 
     alert(data); 
    } 
}); 

這裏是片形式的(這是其默認禁用最後一個表單屬性):

<label id="uploadAnimation">Upload your file:</label> 
<input type="file" id="myfile" disabled> 

這裏是PHP類應該檢索此文件:

include 'db_connector.php'; 
$fileName = $_FILES['file']['name']; 
$fileType = $_FILES['file']['type']; 
$fileError = $_FILES['file']['error']; 
$fileContent = file_get_contents($_FILES['file']['tmp_name']); 

if($fileError == UPLOAD_ERR_OK){ 
//file uploaded 
}else{ 
//error while uploading 

    echo json_encode(array(
      'error' => true, 
      'message' => $message 
     )); 
} 

當我嘗試將消息記錄到單獨的文件php代碼似乎工作,但我可以找不到任何xampp文件夾中的文件。 此外,來自ajax的alert(data);不顯示任何值。

+0

你雖然看到的console.log(數據)輸出成功的回調? – AdamJeffers

+0

我看到彈出框,但它是空的 – Lenny

+0

'$ fileName = $ _FILES ['file'] ['name'];''和'$ fileType = $ _FILES ['file'] ['type'];'存儲正確的文件名並鍵入 – Lenny

回答

2

你應該通過調用move_uploaded_file首先將文件移動到某個文件夾:

if ($fileError == UPLOAD_ERR_OK) { 
     $tmp_name = $_FILES['file']['tmp_name']; 
     $name = $_FILES['file']['name']; 
     move_uploaded_file($tmp_name, "$your_uploads_dir/$name"); 
    } 
+0

我得到這個錯誤:'警告:move_uploaded_file(tmp/home-cat.jpg):無法打開流:沒有這樣的文件或目錄在D:\ xampp \ htdocs \ biz \ pages \ includes \ upload.php

警告:move_uploaded_file()以:無法移動 'd:\ XAMPP \ TMP \ php54A.tmp' 到 'TMP /家庭cat.jpg' 在d:\ XAMPP \ htdocs \ biz \ pages \ includes \ upload.php on line
'第15行是:'move_uploaded_file($ tmp_name,「tmp/$ name」);' – Lenny

+0

那是因爲'tmp/home-cat.jpg'不是有效的目錄。您需要指定從驅動器到服務器可訪問目錄的完整路徑。在站點的文檔根目錄中創建一個文件夾並指向它。像D:\ xampp \ htdocs \ biz \ uploads \ home-cat.jpg –

+0

它的工作原理!非常感謝!你是最好的安東! – Lenny