2016-01-13 80 views
1

我試圖上傳通過PHP的映像文件,它是不工作:PHP文件上傳的圖像不加載到服務器

<?php 
$target_dir = "/home/NAME/uploads/"; 
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]); 

move_uploaded_file($_FILES['fileToUpload']['name'], $target_dir); 

$uploadOk = 1; 
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION); 

print_r($_FILES); 
?> 

這是什麼是返回,但沒有文件實際上上傳。任何人都知道發生了什麼事?由於

Array ([fileToUpload] => Array ([name] => followers.png [type] => image/png [tmp_name] => /tmp/phpKsuz1B [error] => 0 [size] => 127008)) 
+1

目標目錄(*/home/NAME/uploads/*)是否具有正確的讀寫權限? – Ben

+0

是的我有chmod 777-ed它 – user1011332

+0

你有權限訪問tmp目錄嗎? – schellingerht

回答

3

變化:

move_uploaded_file($_FILES['fileToUpload']['name'], $target_dir); 

要:

move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file) 
2

變化move_uploaded_file($_FILES['fileToUpload']['name'], $target_dir);move_uploaded_file($_FILES['fileToUpload']['tmp_name'], $target_dir);

move_uploaded_file,以便它上傳,而不是原來所需要的臨時文件名文件的名稱,因爲它需要一個資源移動。

1

上傳的文件實際上是$_FILES['fileToUpload']['tmp_name'],這是您需要移動的文件。

一個很好的方式去是這樣的:

$tempFile = $_FILES['fileToUpload']['tmp_name'];  
$destFile = '/dest/directory/' . $_FILES['fileToUpload']['name']; 

// You'll now have your temp file in destination directory, with the original image's name 
move_uploaded_file($tempFile, $destFile); 

好的做法是讓你的文件名唯一的,因爲你永遠不知道什麼時候不同的圖像可能被命名爲image01.jpg(往往比人們希望) 。

$tempFile = $_FILES['fileToUpload']['tmp_name'];  

$destDir = '/dest/directory/'; 
$destName = uniqid() . '_' . $_FILES['fileToUpload']['name']; 
$destFile = $destDir . $destName; 

// Temp file is now in destination directory, with a unique filename 
move_uploaded_file($tempFile, $destFile);