【问题标题】:PHP: Uploading and renaming imagePHP:上传和重命名图像
【发布时间】:2016-02-17 09:35:21
【问题描述】:

我正在使用脚本上传和重命名文件。 表格如下所示。

<form action="" enctype="multipart/form-data" method="post">
<input type="text" name="shortlink" placeholder="Shortlink"><br>
<input id="file" name="file" type="file" />
<input id="Submit" name="submit" type="submit" value="Submit" />

php上传器长这样

if (isset($_POST['submit']))
{
    $filename = $_FILES["file"]["name"];
    $file_basename = substr($filename, 0, strripos($filename, '.')); // get file extention
    $file_ext = substr($filename, strripos($filename, '.')); // get file name
    $filesize = $_FILES["file"]["size"];
    $allowed_file_types = array('.doc','.docx','.jpg','.jpeg','.pdf');  

    if (in_array($file_ext,$allowed_file_types) && ($filesize < 20000000000000))
    {   
        // Rename file
        $newfilename = $_POST['shortlink'] . $file_ext;
        if (file_exists("upload/" . $newfilename))
        {
            // file already exists error
            echo "You have already uploaded this file.";
        }
        else
        {       
            move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $newfilename);
            echo "File uploaded successfully.";     
        }
    }
    elseif (empty($file_basename))
    {   
        // file selection error
        echo "Please select a file to upload.";
    } 
    elseif ($filesize > 20000000000000)
    {   
        // file size error
        echo "The file you are trying to upload is too large.";
    }
    else
    {
        // file type error
        echo "Only these file typs are allowed for upload: " . implode(', ',$allowed_file_types);
        unlink($_FILES["file"]["tmp_name"]);
    }
}

当我尝试上传简单的文本文件(.txt、.doc、.docx)时,它可以完美运行。但是当我尝试上传任何 .jpg 图像时,它没有响应。表格刚刚清除,仅此而已。没有错误信息或任何东西。 谁能告诉我错误在哪里?

【问题讨论】:

  • 它对我来说很好用。
  • @marwej,你能告诉我们你遇到了什么错误吗?
  • 第一次成功上传图片时出现问题,但第二次上传任何具有不同名称的相同扩展文件时会出现“您已经上传此文件”的错误。
  • 刚刚发现它适用于较小的文件。但是当我尝试上传大于 5mb 的更大图像时,我遇到了同样的问题。
  • 我没有收到任何错误消息。表格只是清除,没有任何反应。

标签: php forms upload


【解决方案1】:

试试这个希望这会奏效:-

if(isset($_POST['submit']))
{
$allowedSize=2;//MB
$allowedFileSize=$allowedSize*1024*1024;//Bytes
$allowedExt=array('pdf','doc','docx');
$extnsn=implode(',' , $allowedExt);
if($_FILES['file']['error']==0)
{
if($_FILES['file']['size']<=$allowedFileSize)
 {
 $p_image=$_FILES['file']['name'];
 
$p_image=date('ymdHis').'_'.uniqid().'_'.$p_image;
 
$fileInfoArray=pathinfo($p_image);
$fileExt = $fileInfoArray['extension'];
 
 if(in_array($fileExt,$allowedExt)) {
        $src = $_FILES['file']['tmp_name'];
        $dest = "uploads/legal-internship/$p_image";
		 $ismoved = move_uploaded_file($src,$dest);  
        
		  $_POST['image'] = $p_image;
          

        } else {
          echo "<br>Please upload file with valid extension ($extnsn).PLease Try Again ";
        }
      } else {
        echo "Please upload file with MAX $allowedSize MB";
      }
    } else {
      echo "Error while Uploading File Size Exceed to 2MB";
	  }

【讨论】:

    【解决方案2】:

    旁注:“20000000000000”= 20 TB。好像很大的图……

    【讨论】:

    • 是的.. 那只是为了舒尔 ;)
    【解决方案3】:

    知道了!

    我的 wamp 服务器是极限。在这里找到了解决问题的指南。 http://rj45tech.com/increasing_php_memory_limit_and_file_upload_size_wamp

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多