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> <input type="file" name="wine_list_menu_upload" id="wine_list_menu_upload"></p>
<p><label for="food_flight_menu_upload">Food & Flights -> </label> <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文件上传并重命名为特定名称以覆盖以前的版本的主要内容,如果未能解决你的问题,请参考以下文章