2016-01-13 92 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);