无法上传图片

  • 本文关键字: laravel image path upload
  • 更新时间 :
  • 英文 :


我在服务器上上传了我的文件,但我无法通过托管公司将我的根文件夹更改为公共文件夹,所以我将文件从公共移动到 httpdocs 目录,但现在上传图像时遇到问题,我做了这条路

$this->validate($request, [
'image' => 'image|nullable|max:1999'
]);
if ($request->hasFile('image')) {
$filenameWithExt = $request->file('image')->getClientOriginalExtension();
$filename = pathinfo($filenameWithExt, PATHINFO_FILENAME);
$extension = $request->file('image')->getClientOriginalExtension();
$fileNameToStore = $filename . '_' . Carbon::today()->toDateString() . '.' . $extension;
$request->file('image')->storeAs('/../Supplier/public/images', $fileNameToStore);
} else {
$fileNameToStore = 'noimage.jpg';
}

当我提交表格时,出现此错误

Path is outside of the defined root, path:

为了在上传后显示图像,我在 html 中有此代码

<td><a download="retourmelding_{{$retour->firmaname}}" href="/storage/images/{{$retour->images}}" title="Foto">
<img alt="Foto" src="/storage/images/{{$retour->images}}">
</a></td>

但在本地它运行良好

请尝试一下:

$request->file('image')->storeAs(storage_path('images'), $fileNameToStore);

您所做的目录定义不正确。

../httpdocs/storage/images/的意思是[laravel directory]/httpdocs/storage/images/

使用帮助程序进行目录定义:帮助程序 - Laravel(英语:Laravel(

我会在"config \ filesystems.php"中更改磁盘并放置如下所示的内容:

'public' => [
'driver' => 'local',
'root' => storage_path('app/public'),
'url' => env('APP_URL').'/storage',
'visibility' => 'public',
],

您可以使用以下代码执行此操作:

在配置文件/文件系统中.php

'my_file' => [
'driver' => 'local',
'root' => storage_path(),
],

在控制器中

$fileNameToStore = $request->file('myfile');               
$name = $fileNameToStore->getClientOriginalName();
Storage::disk('my_file')->PutFileAs('images', $fileNameToStore, $name);

用于使用路由检索视图文件中的图像。因为直接无法访问storage/images文件夹。

您需要在控制器中创建一个新功能。

use Auth, Storage, File, Response;
public function displayImage($filename)
{       
$path = storage_path('images/' . $filename);
if (!File::exists($path)) {
abort(404);
}
$file = File::get($path);
$type = File::mimeType($path);
$response = Response::make($file, 200);
$response->header("Content-Type", $type);    
return $response;

}

新路线添加

Route::get('image/{filename}', 'YOURCONTROLLER@displayImage')->name('image.displayImage');

视图(检索图像(

<img src="{{ route('image.displayImage',$image) }}" alt="" title="">

相关内容

  • 没有找到相关文章

最新更新