【问题标题】:move_uploaded_file - Replace Name & Keep Extensionnmove_uploaded_file - 替换名称并保留扩展名
【发布时间】:2015-03-21 09:18:28
【问题描述】:

我在 PHP 中有一个简单的上传脚本,它允许用户添加照片,但即使图像确实上传到相关目录并显示在网页上,它在我的 C: 驱动器文件夹中不可见,所以我想知道我是否正确上传它。我的代码是:

$path = "../images/";
$extension = "jpg";
move_uploaded_file($_FILES["image"]["tmp_name"],"$path" . $id . "." . $extension);

据我所知,上传的所有图片都是jpg,我很确定$extension 的这种用法是正确的,但我想知道是否有更好的方法来编写此代码,也许使用实际的文件扩展名并且只是替换名称。

【问题讨论】:

  • 您在搜索C: 位置吗?我相信您应该查看您网站的根文件夹。假设id=3,图像路径将是'../images/3.jpg'。请记住,.. 表示将目录更改为当前目录的父目录。所以你必须查看你正在使用的文件的父目录,找到一个名为 images 的文件夹并检查它是否在那里不可用。

标签: php forms file-upload


【解决方案1】:

您可以执行以下操作,这将帮助您保留名称和扩展名

$path = "../images/";
move_uploaded_file($_FILES["image"]["tmp_name"], $path .$_FILES["image"]["name"]);

如果你想改名,那么

$path = "../images/";
$filename = "file_1";
$ext = explode('.',$_FILES['image']['name']);
$extension = ".".$ext[1];
move_uploaded_file($_FILES["image"]["tmp_name"], $path .$filename.$extension);

【讨论】:

  • 我相信扩展将无法正常工作,因为爆炸字符串不包含分隔符,但在连接 $path.$filename.$extension 时,您将得到类似于 ../images/file_1jpg 的内容,假设 $extension 为 @987654325 @。请更新您的答案以包含句点.
  • 谢谢,我可以看到这是如何工作的,但它没有在文件和扩展名之间添加.
  • 小心使用它。根据有多少人有上传权限,这会变得很危险,因为一旦有人上传 image.js.jpg,文件就会保存为 image.js!
  • 感谢@Marc,目前只有我在使用上传,但如果我以后允许其他人使用它,我会记住这一点
猜你喜欢
  • 2022-07-18
  • 1970-01-01
  • 2021-07-11
  • 2017-10-14
  • 2011-09-15
  • 2013-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多