我一直在使用这个tutorial跟踪上传方法,我得到了一些我不能再思考的错误了。
以下是示例,我上传文件名" fileNumber1.pdf",laravel系统将使用Storage facade保存文件。
$filePath[] = $fileData->storeAs('uploadedFile', $fileName);
因此原始路径将是" storage / app / uploadedFile / fileNumber1.pdf"。
要查看该文件,教程建议使用
echo asset('storage/file.txt');
所以根据我的理解,回声应该像
echo asset('storage/uploadedFile/fileNumber1.pdf');
由于我使用本地开发,因此返回
http://localhost:8000/storage/uploadedFile/fileNumber1.pdf
然后我转到给定的链接,它返回
Sorry, the page you are looking for could not be found.
那么接收或查看文件的正确方法是怎样的呢?
答案 0 :(得分:0)
此网址http://localhost:8000/
指向pubilc
文件夹
因此,将文件存储在uploadedFile
文件夹内的public
文件夹中,然后使用
http://localhost:8000/uploadedFile/fileNumber1.pdf
否则请使用storage_path('uploadedFile/fileNumber1.pdf');
代替asset('storage/uploadedFile/fileNumber1.pdf');
答案 1 :(得分:0)
如果您已经按照教程链接进行操作,那么您应该运行以下命令创建一个符号链接,如果还没有,请在您的应用程序文件夹中运行该artisan命令。
php artisan storage:link
所以现在下面的commad会给你想要的结果。
{{ asset('storage/uploadedFile/fileNumber1.pdf') }}
或
{{ storage_path('uploadedFile/fileNumber1.pdf') }}
您不必指向文件的完整路径,因为asset()将默认将您指向公用文件夹,然后您必须添加文件位置所需的路径。
答案 2 :(得分:0)
错误是我的。
解决方案很简单。
原文是
$filePath[] = $fileData->storeAs('uploadedFile', $fileName);
解决方案是
$filePath[] = $fileData->storeAs('public/uploadedFile', $fileName);
只需添加#34; public"在上传之前的文件路径之前。
感谢所有人的努力。