【问题标题】:How to create an upload form with upload and custom filename in php?如何在 php 中使用上传和自定义文件名创建上传表单?
【发布时间】:2020-11-24 11:45:05
【问题描述】:

您好,我正在尝试在 php 中创建上传表单。包含、上传输入、文本输入(上传文件的名称)和提交按钮。但是我对php, 了解不多,所以我不知道如何实际链接我在<input type="text"/> 上输入的内容在上传时成为文件的名称。如果有人可以帮忙?谢谢。

这是我的代码:

<!DOCTYPE html>
<html>
<head>
  <title>Tu peux uploader ici ta video.</title>
</head>
<body>
  <form enctype="multipart/form-data" action="upload.php" method="POST">
    <p>Upload your file</p>
    <input type="file" name="uploaded_file"></input><br />
    <input type="text" name="file-name"></input><br />  <!-- [ASK]: How to make this the file name of the uploaded file -->
    <input type="submit" value="Upload"></input>
  </form>
</body>
</html>
<?PHP
  if(!empty($_FILES['uploaded_file']))
  {
    $path = "uploads/";
    $path = $path . basename( $_FILES['uploaded_file']['name']);
​
    if(move_uploaded_file($_FILES['uploaded_file']['tmp_name'], $path)) {
      echo "The file ".  basename( $_FILES['uploaded_file']['name']). 
      " has been uploaded";
    } else{
        echo "There was an error uploading the file, please try again!";
    }
  }
?>

【问题讨论】:

  • 在 PHP 中提交后如何访问普通表单字段,基本上任何初学者教程都可以阅读,以防您仍然不知道。并且文件的目标名称在move_uploaded_file调用中设置。

标签: php forms


【解决方案1】:

move_uploaded_file ( string $filename , string $destination ) 采用 filename 是上传文件的文件名,而 destination 是移动文件的目的地。注意目标目录必须存在; move_uploaded_file() 不会自动创建它。现在让我们来获取名称...

  • $_FILES['uploaded_file']['tmp_name'] 为您提供上传文件存储在服务器上的文件的临时文件名,例如。 C:\Users\USER\AppData\Local\Temp\phpD3C.tmp 而
  • $_FILES['uploaded_file']['name'] 为您提供提取扩展名所需的实际名称,例如。我的文件.jpg
  • 要链接您在 上键入的内容,首先通过 $_POST["file-name"] 获取它,然后与扩展名连接。使用 pathinfo 检索原始扩展名。

将您的代码更改为...

 <!DOCTYPE html>
<html>
<head>
  <title>Tu peux uploader ici ta video.</title>
</head>
<body>
  <form enctype="multipart/form-data" action="upload.php" method="POST">
    <p>Upload your file</p>
    <input type="file" name="uploaded_file"></input><br />
    <input type="text" name="file-name"></input><br />  <!-- [ASK]: How to make this the file name of the uploaded file -->
    <input type="submit" value="Upload"></input>
  </form>
</body>
</html>

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {

  if(!empty($_FILES['uploaded_file']))
  {
    $file_parts = pathinfo(basename( $_FILES['uploaded_file']['name'])); //access the actual name instead of tmp_name
    //just pick the extension of the file_parts and concatenate it to your path
    $path = 'images/';
    $path = $path . $_POST["file-name"] . "." . $file_parts['extension'] ;
    if(move_uploaded_file($_FILES['uploaded_file']['tmp_name'], $path)) {
      echo "The file ". basename($path) ." has been uploaded";
    } else{
        echo "There was an error uploading the file, please try again!";
    }
  }
}
?>

这应该会为您提供所需的名称。因此,如果您上传文件 dog.php 并且在文本字段中有牛,则结果名称应该是 cow.php。

结果:

【讨论】:

  • 如果这回答了您的问题,请告诉我。如果可行,请记住将我的答案标记为正确。谢谢。
  • 差不多了,谢谢。唯一的事情是,当我最终将其移至$path 时。我丢失了该特定文件的文件扩展名。
  • 现在你在那里。我已经编辑了我的答案,见上文。谢谢。
猜你喜欢
  • 2016-09-13
  • 1970-01-01
  • 2021-07-26
  • 2011-08-13
  • 2019-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多