PHP文件上传并重命名为特定名称以覆盖以前的版本

Posted

技术标签:

【中文标题】PHP文件上传并重命名为特定名称以覆盖以前的版本【英文标题】:PHP file upload and rename to specific name to overwrite previous version 【发布时间】:2014-04-02 20:32:27 【问题描述】:

我正在尝试通过创建一个小型上传表单将 PDF 上传到菜单目录并为其指定特定名称以覆盖以前的版本,从而使一些同事可以轻松地在线更新菜单(两个 PDF)。

这是我目前所拥有的......

表格:

<section>
<form action="menu_uploader.php" method="post" id="menu_upload" name="menu_upload" enctype="multipart/form-data" >
<p><label for="wine_list_menu_upload">Wine List -> </label>&nbsp;<input type="file" name="wine_list_menu_upload" id="wine_list_menu_upload"></p>
<p><label for="food_flight_menu_upload">Food &amp; Flights -> </label>&nbsp;<input type="file" name="food_flight_menu_upload" id="food_flight_menu_upload"></p>
<p><input type="submit" name="submit" value="Upload" id="submit"></p>
</form>
</section>

PHP

<?php

if( ($_FILES["wine_list_menu_upload"]["type"] == "application/pdf") &&
    ($_FILES["food_flight_menu_upload"]["type"] == "application/pdf") &&
    ($_FILES["wine_list_menu_upload"]["size"] < 1048576*5) && 
    ($_FILES["food_flight_menu_upload"]["size"] < 1048576*5))
       
        if($_FILES["wine_list_menu_upload"]["error"] > 0 || $_FILES["food_flight_menu_upload"]["error"] > 0)    
            echo "Error Code: " . $_FILES["wine_list_menu_upload"]["error"] xor $_FILES["food_flight_menu_upload"]["error"] . "<br>";
                else
                    move_uploaded_file($_FILES["wine_list_menu_upload"]["tmp_name"], "tasting-bar/menus/test/SEWC-Wine_Menu.pdf");
                     move_uploaded_file($_FILES["food_flight_menu_upload"]["tmp_name"], "tasting-bar/menus/test/SEWC-Food_Flight_Menu.pdf");
                        echo "Menus uploaded successfully!"; 
    

else
  
  echo "Invalid file type. Must be a PDF and under 5MB. Sorry!<br/>";
  echo "File Type - " . $_FILES["wine_list_menu_upload"]["type"] . "<br/>";
  echo "File Name - " . $_FILES["wine_list_menu_upload"]["name"];

  

?>

我需要将“wine_list_menu_upload”重命名为“SEWC-Wine_Menu.pdf”并改名为“tasting-bar/menus/”和 “food_flight_menu_upload”重命名为“SEWC-Food_Flight_Menu.pdf”并改名为“tasting-bar/menus/”

我做错了什么?

【问题讨论】:

您是否设置了文件夹的写入权限? 您是否尝试过使用完整的文件夹描述,`C:\tasting-bar\menus`? 目录“tasting-bar/menus/”设置为777 此网络服务器在 GoDaddy 上。不知道其余的会是什么样子。 sewinecollective.com/tasting-bar/menus ? 是windows还是linux服务器? 【参考方案1】:

尝试在 move_uploaded_file 之前添加这些行

chmod('tasting-bar/', 0777);
chmod('tasting-bar/menus', 0777);
chmod('tasting-bar/menus/test/', 0777);

如果是权限问题,应该这样解决

【讨论】:

想通了,但我无法回答我自己的问题,因为我是这里的新手。我在脚本的顶部插入了这个... $dir_root = $_SERVER['DOCUMENT_ROOT'];然后将 $dir_root 放在所需路径之前。感谢您的意见!

以上是关于PHP文件上传并重命名为特定名称以覆盖以前的版本的主要内容,如果未能解决你的问题,请参考以下文章

计划批处理文件不将文件重命名为使用 %date% 和 %time% 变量指定的名称

在php中上传时重命名文件

Linux复制文件到某路径并重命名

Linux复制文件到某路径并重命名

如何将项目放到nginx

解压并重命名