我在服务器上上传了我的文件,但我无法通过托管公司将我的根文件夹更改为公共文件夹,所以我将文件从公共移动到 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="">