上传图片PHP(失败)

时间:2013-10-14 20:09:27

标签: php image apache upload

我正在尝试构建一个表单来将缩略图(图像)上传到服务器 - 看起来图像已成功上传到服务器临时文件夹(我已用get_defined_vars确认了这一点 - 它给出了一个临时文件名,没有错误),但没有移动到DOCUMENT_ROOT

中的文件夹

这里的最终目标是上传图像,然后返回一个要存储在MySQL中的URL

HTML表单(位于DOCUMENT_ROOT / admin中)

<form action="upload.php" method="post" enctype="multipart/form-data">
  <label for="thumbnail">Thumbnail </label>
  <input type="file" name="thumbnail" id="thumbnail">
</form>

upload.php的

<?php
$thumbnail = uploadfile($_FILE['thumbnail']['name'],$_SERVER['DOCUMENT_ROOT'].'/thumbs/upload/',$_FILE['thumbnail']['tmp_name']);
if(($thumbnail)!== FALSE)
{echo $thumbnail;} else {echo 'upload failed<br>';}

function uploadfile($origin, $dest, $tmp_name)
{
  $origin = strtolower(basename($origin));
  $fulldest = $dest.$origin;
  $filename = $origin;
  echo '$fulldest '.$fulldest.'<br />';
  echo '$filename '.$filename.'<br />';
  if (move_uploaded_file($tmp_name, $fulldest))
    {return $filename;}
  return false;
}
?>

结果(注意:我删除了实际的文档根目录)

$fulldest [DOCUMENT_ROOT] /thumbs/upload/
$filename 
upload failed

我还为上传500M设置了一个.htaccess指令,以确保图片大小不是问题

<IfModule mod_php4.c>
  php_value upload_max_filesize 500M
  php_value post_max_size 500M
</IfModule> 

编辑::我的目标目录是chmod 0777用于测试 - 因此权限不应该是问题。

1 个答案:

答案 0 :(得分:1)

我不禁注意到您的$filename为空且$fulldest缺少文件名。我认为问题在于您使用的是$_FILE而不是$_FILES

$thumbnail = uploadfile($_FILES['thumbnail']['name'],
             $_SERVER['DOCUMENT_ROOT'].'/thumbs/upload/',
             $_FILES['thumbnail']['tmp_name']);

我认为这样可行。