我正在尝试构建一个脚本来上传图像并将其重命名为文件夹并将路径存储在我的sql db中。
这就是我所处的位置:文件上传到文件夹和db的路径名,但我无法弄清楚如何重命名文件名。理想情况下,我想使文件名唯一,所以我不重复。
<?php
//preparing the patch to copy the uploaded file
$target_path = "upload/";
//adding the name of the file, finishing the path
$target_path = $target_path . basename( $_FILES['picture']['name']);
//moving the file to the folder
if(move_uploaded_file($_FILES['picture']['tmp_name'], $target_path)) {
echo "The file ". basename( $_FILES['picture']['name']).
" has been uploaded";
} else{
echo "There was an error uploading the file, please try again!";
}
//getting input from the form
$name = $_POST['name'];
$description = $_POST['description'];
//preparing the query to insert the values
$query = "INSERT INTO complete_table (name, description, picture) VALUES ('$name', '$description', '". $target_path ."')";
//opening connection to db
$link = mysql_connect('localhost', 'root', 'password');
if (!$link) {
die('Could not connect: ' . mysql_error());
}
//selecting a db
mysql_select_db("wcs_venues", $link) or die(mysql_error());
//running the query
$result = mysql_query($query) or die (mysql_error());
//closing the connection
mysql_close($link);
?>
我对这一切都是新手而且我真的很努力但是在查看了很多教程并回答了有关Stack溢出的问题之后,我意识到我需要帮助。提前谢谢你帮助这个新手。
答案 0 :(得分:1)
好吧,您可以在此处设置要保存的文件的名称:
$target_path = "upload/";
$target_path = $target_path . basename( $_FILES['picture']['name']);
在这种情况下,您将在变量$target_path
中构建文件名。只需将其更改为其他内容。你改变它取决于你。例如,如果您不关心文件的名称并且只希望它始终是唯一的,则可以创建GUID或Unique ID并将其用作文件名。类似的东西:
$target_path = "upload/";
$target_path = $target_path . uniqid();
请注意,这实际上会丢弃文件的现有名称并完全替换它。如果要保留原始名称(例如在网页上显示),也可以将其存储在数据库中。
答案 1 :(得分:1)
首先获取文件扩展名:
$file_extension = strrchr($uploaded_file_name, ".");
然后使用唯一ID + 文件扩展名
重命名上传的文件$uploaded_file_name = uniqid() . $file_extension;
示例:强>
提示:将原始文件名和其他信息保存在数据库中。
答案 2 :(得分:0)
首先使用pathinfo()
然后创建您的唯一名称:
$name = 'myname'.uniqid();
然后重命名您的文件。
$target_path = $target_path . $name.$ext);
move_upload_file接受第二个参数$ destination,它是你插入target_path的位置(你的文件将以给定的名字保存在哪里)。