图片上传PHP

时间:2009-10-21 10:22:39

标签: php

这是我的代码;

<?php

 define ("MAX_SIZE","500"); 

 function getExtension($str) {
         $i = strrpos($str,".");
         if (!$i) { return ""; }
         $l = strlen($str) - $i;
         $ext = substr($str,$i+1,$l);
         return $ext;
 }

 $errors=0;
 if(isset($_POST['Submit'])) 
 {

    $image=$_FILES['image']['name'];
    if ($image) 
    {
        $filename = stripslashes($_FILES['image']['name']);

        $extension = getExtension($filename);
        $extension = strtolower($extension);

 if (($extension != "jpg") && ($extension != "jpeg") && ($extension != "png") && ($extension != "gif")) 
        {
        //print error message
            echo '<h1>Unknown extension!</h1>';
            $errors=1;
        }
        else
        {

 $size=filesize($_FILES['image']['tmp_name']);

if ($size > MAX_SIZE*1024)
{
    echo '<h1>You have exceeded the size limit!</h1>';
    $errors=1;
}

$image_name=time().'.'.$extension;
$newname="user_img/".$image_name;
$copied = copy($_FILES['image']['tmp_name'], $newname);
if (!$copied) 
{
    echo '<h1>Copy unsuccessful!</h1>';
    $errors=1;
}}}}

 if(isset($_POST['Submit']) && !$errors) 
 {
    echo "<h1>File Uploaded Successfully! Try again!</h1>";
 }

&GT;

这在我的本地主机上运行正常但是当我将它上传到服务器上时它根本不起作用而且没有显示任何错误以及仅显示不成功的消息。 什么是问题和解决方案 感谢

6 个答案:

答案 0 :(得分:2)

您需要chmod要上传的文件夹才能获得相应的权限

您可以使用FileZilla轻松完成此操作。

答案 1 :(得分:0)

检查您的脚本正在运行的用户,因为您的主机有权写入user_img目录。

答案 2 :(得分:0)

可能有几个问题:

  • 首先确保您已启用error_reporting,以查看出现的错误
  • 检查你的php设置:file_uploadsupload_max_filesizedescription
  • 检查要写入文件的文件夹的权限
  • 也尝试move_uploaded_file功能

答案 3 :(得分:0)

这可能是权限错误,请确保您在编写映像的目录中运行php的用户具有足够的权限。另一种可能性是你超过了php.ini文件中设置的最大POST大小。

答案 4 :(得分:0)

您还可以考虑使用 user_img 文件夹的绝对路径,这样可以减轻有关文件夹实际相对路径的任何问题:

$newname="user_img/".$image_name;

切换到:

$newname="/path/to/www/user_img/".$image_name;

答案 5 :(得分:0)

除了检查文件权限外:

  1. 我一直使用move_uploaded_file()而不是copy()
  2. 您的目标文件是“user_img /".$ image_name - 您的服务器上的相对目录是否有效以及localhost?您可能希望转换为完全限定的路径