我使用下面的代码来存储上传的文件
$file = $request->file($file_attachment);
$rules = [];
$rules[$file_attachment] = 'required|mimes:jpeg|max:500';
$validator = Validator::make($request->all(), $rules);
if ($validator->fails()) {
return redirect()->back()
->with('uploadErrors', $validator->errors());
}
$userid = session()->get('user')->id;
$destinationPath = config('app.filesDestinationPath') . '/' . $userid . '/';
$uploaded = Storage::put($destinationPath . $file_attachment . '.' . $file->getClientOriginalExtension(), file_get_contents($file->getRealPath()));
Run Code Online (Sandbox Code Playgroud)
上传的文件存放在storage/app/2/filename.jpg
我想向用户展示他上传的文件。我怎样才能做到这一点?
$storage = Storage::get('/2/filename.jpg');
我收到无法阅读的文本。我可以确认文件已被读取。但是如何将其作为图像显示给用户。
希望我说清楚了。
工作解决方案
display.blade.php
<img src="{{ URL::asset('storage/photo.jpg') }}" />
Run Code Online (Sandbox Code Playgroud)
网页.php
Route::group(['middleware' => ['web']], function () {
Route::get('storage/{filename}', function ($filename) {
$userid = session()->get('user')->id;
return Storage::get($userid . '/' . $filename);
});
});
Run Code Online (Sandbox Code Playgroud)
感谢:@Boghani Chirag 和 @rkj
rkj*_*rkj 14
文件不能像您说的那样公开访问,然后像这样读取文件
$userid = session()->get('user')->id;
$contents = Storage::get($userid.'/file.jpg');
Run Code Online (Sandbox Code Playgroud)
假设您的文件在路径中storage/app/{$userid}/file.jpg
并且默认磁盘是local检查config/filesystems.php
文件可公开访问
如果您想让您的文件可公开访问,请将文件存储在此storage/app/public文件夹中。您可以在其中创建子文件夹并在那里上传。将文件存储在其中 storage/app/public后,您只需创建一个符号链接,laravel 就会为其提供 artisan 命令。
php artisan storage:link
Run Code Online (Sandbox Code Playgroud)
这将创建一个符号链接storage/app/publicto public/storage。意味着现在您可以像这样访问您的文件
$contents = Storage::disk('public')->get('file.jpg');
Run Code Online (Sandbox Code Playgroud)
这里是文件物理路径storage/app/public/file.jpg,它通过符号链接路径访问public/storage/file.jpg
假设您有 storage/app/public/uploads存储上传文件的子文件夹,那么您可以像这样访问它
$contents = Storage::disk('public')->get('uploads/file.jpg');
Run Code Online (Sandbox Code Playgroud)
当您在公共文件夹中上传时,您可以在视图中访问它
echo asset('storage/file.jpg'); //without subfolder uploads
echo asset('storage/uploads/file.jpg');
Run Code Online (Sandbox Code Playgroud)
检查详细信息https://laravel.com/docs/5.6/filesystem#configuration
请记住将您的文件夹放在 storage/app/public/ 中
创建符号链接符号链接来访问此文件夹
php artisan storage:link
Run Code Online (Sandbox Code Playgroud)
如果您想访问 2 个文件夹的个人资料图像,请在您的 Blade 文件中执行以下操作
<img src="{{ asset('storage/2/images/'.$user->profile_image) }}" />
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
41865 次 |
| 最近记录: |