【问题标题】:Encoding uploaded files name编码上传的文件名
【发布时间】:2015-10-22 05:44:04
【问题描述】:

我想问一下,如果我有一个网络表单,人们用它来上传一些东西到我的数据库。如果 2 个人上传同名文件,在上传目录中,其中一个将替换另一个。因此,我需要将上传到 db 的每个文件的名称更改为:filename201405051200.pdf 或 jpg 或... 这里我们有每个示例 image1 的文件名,数字是上传的日期和时间。所以任何帮助。我正在使用以下链接中显示的代码作为答案:

Uploading blob files/images into Mysql

我使用了这个代码:

$path = "../uploads/".$_FILES['file']['name'];
if(move_uploaded_file($_FILES["file"]["tmp_name"], $path.'_'.time())){
...
}

但是现在文件的格式类型被时间替换了。所以如果是 img.jpg 现在是 img85890338jpg 并且无法正常打开

【问题讨论】:

  • 究竟是什么不起作用?请向我们展示您已经编写的代码。
  • 查看链接。首先,文件已上传,但是当我想通过我的网站下载时,它已下载但无法正常打开。无论如何,我的问题是如何通过添加我在问题中所说的名称来保存文件,请参阅链接以查看使用的代码。
  • 你使用 rand(111111,999999) 函数和你的文件名来设置唯一的文件名。
  • 先生,我使用了这行代码,它可以工作,但是它替换了文件的格式类型,所以如果文件是 img1.jpg 现在它是 img1_8573349jpg 没有 .jpg 并且无法打开它:$path = "../uploads/".$_FILES['file']['name']; //$path2 = "../uploads/".$_FILES['echo_photo']['name']; if(move_uploaded_file($_FILES["file"]["tmp_name"], $path.'_'.time())){ ...}

标签: php html sql


【解决方案1】:

您可以使用pathinfo提取文件扩展名:

$fileExt = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION);  

之后,您可以创建新文件名:

if(move_uploaded_file($_FILES["file"]["tmp_name"], $path.'_'.time().date().'.'.$fileExt)) {

}

【讨论】:

  • 太棒了,谢谢,但我现在更喜欢使用日期和时间:move_uploaded_file($_FILES["file"]["tmp_name"], $path.'_'.time().date ().'.'.$ext) 和 $ext = pathinfo($path, PATHINFO_EXTENSION);
猜你喜欢
  • 2011-06-28
  • 2013-02-21
  • 2016-05-26
  • 1970-01-01
  • 1970-01-01
  • 2013-02-17
  • 2019-12-19
  • 2020-08-14
相关资源
最近更新 更多