【问题标题】:How to upload & Save Files with Desired name如何使用所需名称上传和保存文件
【发布时间】:2011-03-31 09:00:06
【问题描述】:

我正在使用此代码上传文件(图像到文件夹)

<form action='' method='POST' enctype='multipart/form-data'>
<input type='file' name='userFile'><br>
<input type='submit' name='upload_btn' value='upload'>
</form>

<?php
$target_Path = "images/";
$target_Path = $target_Path.basename( $_FILES['userFile']['name'] );
move_uploaded_file( $_FILES['userFile']['tmp_name'], $target_Path );
?>

当文件(图像)保存在指定的路径时......如果我想用一些想要的名称保存文件......

我已经尝试替换这个

$target_Path = $target_Path.basename( $_FILES['userFile']['name'] );

有了这个

$target_Path = $target_Path.basename( "myFile.png" );

但它不起作用

【问题讨论】:

  • 究竟什么是“不工作”?有任何错误信息吗?
  • 如果您只使用"myFile.png",则不需要basename。不过应该没什么区别。

标签: php file-upload


【解决方案1】:
 <html>
<head>
<title>PHP Reanme image example</title>
</head>
<body>

<form action="fileupload.php" enctype="multipart/form-data" method="post">
Select image :
<input type="file" name="file"><br/>
Enter image name :<input type="text" name="filename"><br/>
<input type="submit" value="Upload" name="Submit1">

</form>

<?php

if(isset($_POST['Submit1']))
{ 


$extension = pathinfo($_FILES["file"]["name"], PATHINFO_EXTENSION);
$name = $_POST["filename"];

move_uploaded_file($_FILES["file"]["tmp_name"], $name.".".$extension);
echo "Old Image Name = ". $_FILES["file"]["name"]."<br/>";
echo "New Image Name = " . $name.".".$extension;

}


?>
</body>
</html>

点击[这里] (https://meeraacademy.com/php-rename-image-while-image-uploading/

【讨论】:

    【解决方案2】:

    只需获取文件扩展名,然后使用 uniqid 为文件分配一个新名称,并将新名称传递给 move_upload_file 方法。例如:

    if(isset($_POST['submit'])){
      $total = count($_FILES['files']['tmp_name']);
      for($i=0;$i<$total;$i++){
        $fileName = $_FILES['files']['name'][$i];
        $ext = pathinfo($fileName, PATHINFO_EXTENSION);
        $newFileName = uniqid();
        $fileDest = 'filesUploaded/'.$newFileName.'.'.$ext;
        if($ext === 'pdf' || 'jpeg' || 'JPG'){
            move_uploaded_file($_FILES['files']['tmp_name'][$i], $fileDest);
            $fileUpload = $newFileName.'.'.$ext[$i].',<br>';
        }else{
          echo 'Pdfs and jpegs only please';
        }
      }
    }
    

    【讨论】:

      【解决方案3】:

      我知道出了什么问题,您看到您在此使用“”而不是“”

      $target_Path = $target_Path.basename( 
      
         "myFile.png"
      
      );
      

      【讨论】:

        【解决方案4】:

        这是PHP中的代码,用于上传图像,将其保存到数据库,显示并保存到文件夹。

        1. 首先,HTML 表单代码:

          <div class="upload">
              <form method="POST" enctype="multipart/form-data" id="imageform">
                 <br>
                 <input type="file" name="image" id="photoimg" >
                 <br><br>
                 <input type="submit" name="submit" value="UPLOAD">
             </form>
          </div>
          
        2. PHP 代码

        根据需要创建数据库和表。(只需要 2 个字段) 表中id(INT) 255 primary key AUTO INCREMENT and your image row(anyname) (MEDIUMBLOB)

        <?php
        
        if(isset($_POST['submit'])){
            if(@getimagesize($_FILES['image']['tmp_name']) == FALSE){
                echo "<span class='image_select'>please select an image</span>";
        
            }
            else{
                $image = addslashes($_FILES['image']['tmp_name']);
                $name  = addslashes($_FILES['image']['name']);
                $image = file_get_contents($image);
                $image = base64_encode($image);
                saveimage($name,$image);
                $uploaddir = 'profile/'; //this is your local directory
                $uploadfile = $uploaddir . basename($_FILES['image']['name']);
        
                echo "<p>";
        
                    if (move_uploaded_file($_FILES['image']['tmp_name'], $uploadfile)) {// file uploaded and moved} 
                    else { //uploaded but not moved}
        
                echo "</p>";
        
        
        
            }
        
        }
        
        displayimage();
        function saveimage($name,$image)
        {
            $con = mysql_connect("localhost","root","your database password");
            mysql_select_db("your database",$con);
            $qry  = "UPDATE your_table SET your_row_name='$image'";
                $result = @mysql_query($qry,$con);
        
            if($result)
            {
                echo "<span class='uploaded'>IMAGE UPLOADED</span>";
        
            }
            else
            {
                echo "<span class='upload_failed'>IMAGE NOT UPLOADED</span>";
        
            }
        }
        function displayimage()
        {
            $con = mysql_connect("localhost","root","your_password");
            mysql_select_db("your_database",$con);
            $qry  = "select * from your_table";
            $result = mysql_query($qry,$con);
        
            while($row  = mysql_fetch_array($result))
            {
                echo '<img class="image" src="data:image;base64,'.$row[1].'">';
        
            }
        
        
        
            mysql_close($con);
        }
        ?>
        

        【讨论】:

          【解决方案5】:

          配置“php.ini”文件

          首先,确保 PHP 配置为允许文件上传。 在“php.ini”文件中,搜索 file_uploads 指令,并将其设置为 On:

          file_uploads = On 
          

          创建 HTML 表单

          接下来,创建一个 HTML 表单,允许用户选择他们想要上传的图像文件:

          <!DOCTYPE html>
          <html>
          <body>
          
          <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>
          
          </body>
          </html>
          

          上面的 HTML 表单要遵循的一些规则: 确保表单使用 method="post" 表单还需要以下属性:enctype="multipart/form-data"。它指定提交表单时使用的内容类型 如果没有上述要求,文件上传将无法正常工作。 其他需要注意的事项: 标记的 type="file" 属性将输入字段显示为文件选择控件,输入控件旁边有一个“浏览”按钮 上面的表单将数据发送到名为“upload.php”的文件中,接下来我们将创建该文件。

          创建上传文件 PHP 脚本

          “upload.php”文件包含上传文件的代码:

          <?php
          $target_dir = "uploads/";
          $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;
              }
          }
          ?>
          

          【讨论】:

            【解决方案6】:

            你可以试试这个,

            $info = pathinfo($_FILES['userFile']['name']);
            $ext = $info['extension']; // get the extension of the file
            $newname = "newname.".$ext; 
            
            $target = 'images/'.$newname;
            move_uploaded_file( $_FILES['userFile']['tmp_name'], $target);
            

            【讨论】:

            • 我收到此错误:- move_uploaded_file(): copy() 函数的第二个参数不能是目录
            【解决方案7】:

            这会很好用—— 您可以使用 HTML5 仅允许上传图像文件。 这是 uploader.htm 的代码 --

            <html>    
                <head>
                    <script>
                        function validateForm(){
                            var image = document.getElementById("image").value;
                            var name = document.getElementById("name").value;
                            if (image =='')
                            {
                                return false;
                            }
                            if(name =='')
                            {
                                return false;
                            } 
                            else 
                            {
                                return true;
                            } 
                            return false;
                        }
                    </script>
                </head>
            
                <body>
                    <form method="post" action="upload.php" enctype="multipart/form-data">
                        <input type="text" name="ext" size="30"/>
                        <input type="text" name="name" id="name" size="30"/>
                        <input type="file" accept="image/*" name="image" id="image" />
                        <input type="submit" value='Save' onclick="return validateForm()"/>
                    </form>
                </body>
            </html>
            

            现在是upload.php的代码--

            <?php  
            $name = $_POST['name'];
            $ext = $_POST['ext'];
            if (isset($_FILES['image']['name']))
            {
                $saveto = "$name.$ext";
                move_uploaded_file($_FILES['image']['tmp_name'], $saveto);
                $typeok = TRUE;
                switch($_FILES['image']['type'])
                {
                    case "image/gif": $src = imagecreatefromgif($saveto); break;
                    case "image/jpeg": // Both regular and progressive jpegs
                    case "image/pjpeg": $src = imagecreatefromjpeg($saveto); break;
                    case "image/png": $src = imagecreatefrompng($saveto); break;
                    default: $typeok = FALSE; break;
                }
                if ($typeok)
                {
                    list($w, $h) = getimagesize($saveto);
                    $max = 100;
                    $tw = $w;
                    $th = $h;
                    if ($w > $h && $max < $w)
                    {
                        $th = $max / $w * $h;
                        $tw = $max;
                    }
                    elseif ($h > $w && $max < $h)
                    {
                        $tw = $max / $h * $w;
                        $th = $max;
                    }
                    elseif ($max < $w)
                    {
                        $tw = $th = $max;
                    }
            
                    $tmp = imagecreatetruecolor($tw, $th);      
                    imagecopyresampled($tmp, $src, 0, 0, 0, 0, $tw, $th, $w, $h);
                    imageconvolution($tmp, array( // Sharpen image
                        array(−1, −1, −1),
                        array(−1, 16, −1),
                        array(−1, −1, −1)      
                    ), 8, 0);
                    imagejpeg($tmp, $saveto);
                    imagedestroy($tmp);
                    imagedestroy($src);
                }
            }
            ?>
            

            【讨论】:

              【解决方案8】:

              使用这个作为上传的目标路径

              <?php
              $file_name = $_FILES["csvFile"]["name"];
              $target_path = $dir = plugin_dir_path( __FILE__ )."\\upload\\". $file_name;
              echo $target_path;
              move_uploaded_file($_FILES["csvFile"]["tmp_name"],$target_path. $file_name);
              ?>
              

              【讨论】:

                【解决方案9】:

                您可以从这里获取演示源代码:http://abhinavsingh.com/blog/2008/05/gmail-type-attachment-how-to-make-one/

                它可以立即使用,或者您可以修改以适合您的应用程序需求。 希望对你有帮助:)

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 2018-02-22
                  • 1970-01-01
                  • 2012-10-07
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2015-01-12
                  • 2013-02-09
                  相关资源
                  最近更新 更多