我正在使用下面的代碼來上傳我的網站在PHP中的文件。我會先發布代碼,然後問我的問題。PHP:在上傳過程中文件被重命名,如果有空格
upload.php的:
<html>
<form action="upload_process.php" method="post" enctype="multipart/form-data">
<label for="file">Select picture to upload:</label>
<input type="file" name="image" id="image" />
<br />
<input type="submit" name="submit" value="Submit" />
</form>
</html>
upload_process.php
<?php
function error ($error, $location, $seconds = 1)
{
header ("Refresh: $seconds; URL = \"$location\"");
echo $error;
exit;
}
$max_file_size = 1000000;
$current_directory = str_replace(basename($_SERVER['PHP_SELF']) , '' , $_SERVER['PHP_SELF']);
$uploaded_directory = $_SERVER ['DOCUMENT_ROOT'] . $current_directory . 'files/';
$upload_form = 'http://' . $_SERVER['HTTP_HOST'] . $current_directory . 'upload.php';
$upload_success = 'http://' . $_SERVER['HTTP_HOST'] . $current_directory . 'view_posters.php';
$fieldname = 'image';
$errors = array (1 => "Max file size exceeded", 2 => "Max file size exceeded", 3 => "Upload incomplete", 4 => "No file attached");
isset ($_POST['submit']) or error ("Redirecting to upload form", $upload_form);
($_FILES[$fieldname]['error'] == 0) or error ($errors[$_FILES[$fieldname]['error']], $upload_form);
@is_uploaded_file($_FILES[$fieldname]['tmp_name']) or error ("Not an HTTP upload", $upload_form);
@getimagesize($_FILES[$fieldname]['tmp_name']) or error ("Please upload only images", $upload_form);
if (file_exists($upload_filename = $uploaded_directory . $_FILES[$fieldname]['name']))
{
error ("File exists", $upload_form);
}
$uploadedfile = $_FILES[$fieldname]['tmp_name'];
$src = imagecreatefromjpeg($uploadedfile);
list($width,$height)=getimagesize($uploadedfile);
$newwidth = 500;
$newheight = 500;
$tmp=imagecreatetruecolor ($newwidth, $newheight);
imagecopyresampled ($tmp, $src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
imagejpeg ($tmp, "files/" . $_FILES[$fieldname]['name'], 100);
imagedestroy($src);
imagedestroy($tmp);
header ("Location: " . $upload_success);
?>
現在,對於我的問題,如果文件名沒有一個空間,它就會調整和正確上傳。但是,如果有空間,會發生奇怪的事情。例如,如果上傳後該文件的名稱是「this image.jpg」,則它會被重新調整大小並以「this.jpg image.jpg」的形式保存到服務器中。你能告訴我爲什麼會發生這種情況嗎?
而且,$ upload_success是一個登錄頁面,它只是表示「上傳成功」。
我試過你的代碼在本地,它工作正常! – Dale 2012-07-15 09:01:08
您是否嘗試過使用具有空格的圖像?該文件被上傳,但在上傳後看看文件名 – pratnala 2012-07-15 09:04:49
是的,我增加了一個文件名的空間,它仍然爲我工作對不起菲拉 – Dale 2012-07-15 09:08:39