当前位置: 首页 > 知识库问答 >
问题:

PHP中的文件上载错误

林彬
2023-03-14

我正在使用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>

上载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

共有3个答案

督德明
2023-03-14

超文本标记语言代码

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

上载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");
   } 
  }
}

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

谢谢Vivek

郁鸿博
2023-03-14

因为你有不允许其他扩展的条件,所以它根据代码工作:

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

显然你的目标文件夹中已经有这样的文件了。再检查一遍。

黄朗
2023-03-14

但是当我试图检查如果我上传mp4文件会发生什么。它回声抱歉,只有JPG,JPEG,PNG

这是一个限制,因为您的代码对其进行了限制。

// 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;
}

很抱歉,上载文件时出错

我不明白这是为什么。如果($uploadOk==0)在所有其他条件中设置为0,则条件,因此应为true,并应回显“对不起,您的文件未上载”。

移动到评论问。

 类似资料:
  • 我正在尝试上载文件,但无法工作: 有用信息:运行IIS Express(使用PHP5.3)-Windows 7 Professional 32位 代码: move_uploaded_file($_FILES[图像][名称],/图像/。$_FILES["Imagem"]["name"])或die("Error:".print_r($_FILES)); 它打印:数组([imagem]= 我确信路径是正

  • 在使用文件上传HTML表单和一些PHP来处理输入时,我感到困惑。在表格中,我为图像选择了两个文件。上载.png文件时,我可以使用$\u文件获取文件大小等信息。但是,当我试图上传一个.jpg文件时,我无法获得比文件名更多的信息,没有大小、类型、临时名称。 当同时上传两个文件时,. png和. jpg,一切都适用于. png文件,但不适用于. jpg。 我错过了什么?在使用带有.jpg文件类型的$\u

  • 类型DiskFileUpload中的方法ParserRequest(HttpServletRequest,int,long,String)不适用于参数(HttpServletRequest) 当我以服务器的身份运行时...它会在控制台出现错误 这是我在此代码中的代码出错,因为类型DiskFileUpload中的方法parseRequest(HttpServletRequest,int,long,S

  • 本文向大家介绍PHP 处理文件上传错误,包括了PHP 处理文件上传错误的使用技巧和注意事项,需要的朋友参考一下 示例 该$_FILES["FILE_NAME"]['error'](其中"FILE_NAME"是文件输入,存在于你的表单的名称属性的值)可能包含以下值之一: UPLOAD_ERR_OK -没有错误,文件上传成功。 UPLOAD_ERR_INI_SIZE-上载的档案超过中的upload_m

  • 问题内容: 我有一个表单(HTML,PHP),允许最终用户上传文件,以使用上传文件(特别是.csv)中的记录来更新数据库(MySQL)。但是,在phpscript中,我只能获取文件名,而不能获取特定文件的完整路径。由于这个原因,fopen()失败。谁能让我知道如何找到完整的路径? HTML代码: PHP脚本: 问题答案: 引用 客户端 上的文件名。要在 服务器端 获取文件名(包括完整路径),您需要

  • 我有一个表格,可以很好地上传很多图像文件,大小也不一样。 但是有些图像没有上传到服务器。 问题图像具有空的$\u文件[name][tmp\u name]和$\u文件[name][error]==8 同时其他图像(文件大小较大或较小)正确上传。 你有什么想法吗? 谢谢