gpt4 book ai didi

php - Laravel 5.4 使用 "Storage::putFile"

转载 作者:搜寻专家 更新时间:2023-10-31 20:59:53 26 4
gpt4 key购买 nike

我正在使用 Laravel 5.4 并想上传一个文件(我们称之为“lorem.ext”)到存储目录(storage/app/)“path/to/file”,文件名唯一。

为此,我想使用 Storage::putFile ( https://laravel.com/docs/5.4/filesystem#storing-files ),它不仅可以存储我的文件,还可以自动创建一个唯一的文件名。

文档说使用这样的:

Storage::putFile('uploadedFile', new File('/path/to/file'));

使用这个,我会得到错误

FileNotFoundException in File.php line 37: The file "/path/to/file" does not exist

我进一步的想法:

老实说,我不知道签名的确切含义,也从未在网上找到 putFile 的工作示例。在文档中没有描述它,仔细观察 (https://laravel.com/api/5.4/Illuminate/Filesystem/FilesystemAdapter.html#method_putFile) 也没有任何信息。

我认为是什么意思:

第一个参数“uploadedFile”(或 https://laravel.com/docs/5.4/filesystem#storing-files 称它为:“photos”)将通过 View 中表单的 ID 自动获取文件:

<input type="file" id="uploadedFile" name="uploadedFile">

并且不再需要通过

加载它
request()->file('uploadedFile')

第二个参数“new File('/path/to/file')”(或 https://laravel.com/docs/5.4/filesystem#storing-files 称它为:“new File('/path/to/photo')”)将指定路径服务器上的目标存储目录没有文件名:

.../storage/app/path/to/file/formerLoremNowUniqueFileName.ext

如此完整的示例,我可以上传我的 lorem.ext 并将其存储在 .../storage/app/path/to/file/formerLoremNowUniqueFileName.ext(不起作用):

查看:

<form method="POST" action="URL/TO/STORE" enctype="multipart/form-data">
{{ csrf_field() }}
<input type="file" id="uploadedFile" name="uploadedFile">
<button type="submit" class="btn btn-primary">Upload</button>
</form>

Controller :

public function store() {
return Storage::putFile('uploadedFile', new File('/path/to/file'));
}

谁都可以

  1. 描述“putFile”的签名以便我得到它? ;-)
  2. 告诉我为什么我的示例是错误的以及为什么我得到这个 FileNotFoundException?

谢谢!

最佳答案

传递给 putFile 的第一个参数是新文件位置。示例:/path/to/new/file/

第二个参数是 FileUploadedFile 实例。这可以来自 request()->file('uploadedFile')

因此你的 Controller 应该读取

public function store() {
return Storage::putFile(
storage_path('uploads'),
request()->file('uploadedFile')
);
}

生成的哈希将用于文件名。

引用:

关于php - Laravel 5.4 使用 "Storage::putFile",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45419672/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com