首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Laravel :自动重命名上传的文件

Laravel :自动重命名上传的文件
EN

Stack Overflow用户
提问于 2017-01-11 10:26:02
回答 6查看 52.5K关注 0票数 10

我允许用户在我的页面上上传任何类型的文件,但是文件的名称可能会发生冲突。所以,我想要自动重命名文件,以便任何时候任何文件被上传,在数据库中,在上传后在文件夹中,当其他用户下载相同的文件,重命名的文件时,文件的名称也会被更改。我试过:

代码语言:javascript
运行
复制
if (Input::hasFile('file')){
        echo "Uploaded</br>";
        $file = Input::file('file');
        
        $file ->move('uploads');
        $fileName = Input::get('rename_to');
        
    }

但是,名称被更改为如下内容:

php5DEB.php phpCFEC.php

,我能做些什么来维护相同类型和格式的文件,只需更改它的名称?

我还想知道如何在页面上显示最近上传的文件并让其他用户下载??

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2017-02-06 23:37:56

用于保存唯一文件名。

在5.3中(对我来说最好是因为在照明\Http\UploadedFile中使用md5_file hashname ):

代码语言:javascript
运行
复制
public function saveFile(Request $request) {
    $file = $request->file('your_input_name')->store('your_path','your_disk');
}

在5.4 (使用非唯一的Str::随机(40) hashname在照明\Http\UploadedFile)。我使用此代码来确保唯一的名称:

代码语言:javascript
运行
复制
public function saveFile(Request $request) {
    $md5Name = md5_file($request->file('your_input_name')->getRealPath());
    $guessExtension = $request->file('your_input_name')->guessExtension();
    $file = $request->file('your_input_name')->storeAs('your_path', $md5Name.'.'.$guessExtension  ,'your_disk');
}
票数 12
EN

Stack Overflow用户

发布于 2017-01-11 11:53:22

用这个

代码语言:javascript
运行
复制
$file->move($destinationPath, $fileName);
票数 12
EN

Stack Overflow用户

发布于 2017-01-11 11:58:22

您可以使用php核心函数rename(oldname,newName) http://php.net/manual/en/function.rename.php

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41588306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档