在PHP中上传文件给出错误

时间:2015-03-17 09:09:35

标签: php

我正在使用PHP构建一个Web应用程序。我正在创建一个文件上传部分,但我遇到了问题。

<form action="upload.php" method="post" enctype="multipart/form-data">
Select image to upload:
<input type="file" name="fileToUpload" id="fileToUpload">
<input type="submit" value="Upload Image" name="submit">
</form>

upload.php的:

<?php
$target_dir = "images/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
$check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
if($check !== false) {
    echo "File is an image - " . $check["mime"] . ".";
    $uploadOk = 1;
} else {
    echo "File is not an image.";
    $uploadOk = 0;
}
}
// Check if file already exists
if (file_exists($target_file)) {
echo "Sorry, file already exists.";
$uploadOk = 0;
}
// Check file size
if ($_FILES["fileToUpload"]["size"] > 500000) {
echo "Sorry, your file is too large.";
$uploadOk = 0;
}
// Allow certain file formats
 if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType !=    "jpeg"
&& $imageFileType != "gif" ) {
echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
$uploadOk = 0;
}
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
echo "Sorry, your file was not uploaded.";
  // if everything is ok, try to upload file
 } else {
   if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
    echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been    uploaded.";
 } else {
    echo "Sorry, there was an error uploading your file.";
  }
  }
  ?>

它适用于图像。但是当我尝试检查如果我上传mp4文件会发生什么。它回声文件已存在,对不起,只有JPG,JPEG,PNG&amp;允许使用GIF文件。过滤,上传文件时出错。请指导我在哪里做错误,这样我的工作对我没有错误。提前谢谢。

4 个答案:

答案 0 :(得分:2)

  

它适用于图像。但当我试图检查如果发生了什么   我上传mp4文件。回声抱歉,只有JPG,JPEG,PNG&amp;允许使用GIF文件

这是限制因为您的代码限制了它。

// Allow certain file formats
 if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType !=    "jpeg"
&& $imageFileType != "gif" ) {
echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
$uploadOk = 0;
}

如果文件不属于jpgpngjpeggif,则不允许上传。

  

回声文件已经存在

这只是因为该文件已存在(目录所在的位置),由于此检查:

// Check if file already exists
if (file_exists($target_file)) {
echo "Sorry, file already exists.";
$uploadOk = 0;
}
  

抱歉,上传文件时出错

我不明白为什么会这样。您的所有其他条件中的条件if ($uploadOk == 0)都设置为0,因此应该为真,并且应该回应“抱歉,您的文件未上传”。

转到评论询问。

答案 1 :(得分:1)

因为你有条件禁止其他扩展,所以它根据代码工作:

if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType !=    "jpeg" && $imageFileType != "gif" ) {
    echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
    $uploadOk = 0;
}

显然你的目标文件夹中已有这样的文件。再次检查。

答案 2 :(得分:0)

  

HTML代码

<form method="POST" enctype="multipart/form-data">
<input id="tags" type="file" name="employer_image"  />
<input type="submit" name="submit" value="submit">
</form
  

upload.php的

if (isset( $_POST['submit'] )
{
 function GetImageExtension($imagetype)
  {
       if(empty($imagetype)) return false;
       switch($imagetype)
       {
           case 'image/bmp': return '.bmp';
           case 'image/gif': return '.gif';
           case 'image/jpeg': return '.jpg';
           case 'image/png': return '.png';
           default: return false;
       }

      }
   if (!empty($_FILES["employer_image"]["name"])) {
   $file_name=$_FILES["employer_image"]["name"];
   $temp_name=$_FILES["employer_image"]["tmp_name"];
   $imgtype=$_FILES["employer_image"]["type"];
   $ext= GetImageExtension($imgtype);
   $imagename=date("d-m-Y").'-'.time().$ext;
   $target_path = "folder-path".$imagename;
  if(move_uploaded_file($temp_name, $target_path)) {
           /* write insert query for store in mysql*/
   }else{
   exit("Error While uploading image on the server");
   } 
  }
}
  

首先在点击提交按钮后从您的本地选择文件   它重定向到upload.php文件,第一个函数是白色,找到文件的扩展名,它返回你的文件扩展名   你需要创建一个文件夹(你可以用名称存储)   在扩展代码之后,它获取带有日期和时间的文件名,您可以设置保存图像的文件的目标路径,然后运行插入查询。   首先,检查可以移动文件的文件夹权限

由于 的Vivek

答案 3 :(得分:0)

检查文件扩展名的情况。并允许上下两种情况。

if($ imageFileType!=“jpg”&amp;&amp; $ imageFileType!=“png”&amp;&amp; $ imageFileType!=“jpeg”&amp;&amp; $ imageFileType!=“gif”&amp;&amp; $ imageFileType!=“JPG”&amp;&amp; $ imageFileType!=“PNG”&amp;&amp; $ imageFileType!=“JPEG”&amp;&amp; $ imageFileType!=“GIF”)