Php 拉威尔存储罐';无法访问
我写了一个系统来上传和显示一些图片,但是我对上传后访问它们的正确方式感到困惑Php 拉威尔存储罐';无法访问,php,laravel,Php,Laravel,我写了一个系统来上传和显示一些图片,但是我对上传后访问它们的正确方式感到困惑 public function storeImage(Request $request) { $request->file('image')->store('public/images'); $filename = md5_file($request->file('image')) . '.' . $request->file('image')->extension(
public function storeImage(Request $request)
{
$request->file('image')->store('public/images');
$filename = md5_file($request->file('image')) . '.' . $request->file('image')->extension();
$img = new Image;
$img->path = 'storage/images/'.$filename;
$img->save();
return back();
}
这很好,我有建议的符号链接存储
,但是如果使用数据库中的$filename
变量,我会得到一个404。在这里生成插入为内联图像src属性的正确路径是什么
图像标记如下所示:
文件夹绝对是符号链接的,我可以在finder中跟踪它。您使用的是最新版本的laravel 5.3吗 如果是,您是否尝试过使用获取图像src URL 例如:
使用照明\支持\立面\存储代码>
$url=Storage::url('file1.jpg')//获取URL
您使用的是最新版本的laravel 5.3吗
如果是,您是否尝试过使用获取图像src URL
例如:
使用照明\支持\立面\存储代码>
$url=Storage::url('file1.jpg')//获取URL
修复了此问题
php artisan storage:link
不适用于homestead。与其删除文件夹,不如使用homestead ssh
和ln-s~/projects/my-website/storage/app/public/~/projects/my-website/public/storage在计算机上手动重新创建文件夹,修复了此问题
php artisan storage:link
不适用于homestead。要删除文件夹,请使用homestadessh
和ln-s~/projects/my-website/storage/app/public/~/projects/my-website/public/storage
在计算机上手动重新创建文件夹,确保文件存储在此目录中
保存文件后,请确保通过传递文件名作为参数来获取文件的url。。下面是我如何实现的
html表单
<form action="" method="post" id="jobImage">
<div class="form-group">
<input type="file" class="form-control" id="image" name="image">
</div>
<input type="button" value="Upload Image" onclick="uploadImage()" class="btn btn-default" />
</form>
web.php中的路由
Route::post('/uploadImage','ControllerClass@uploadImage');
在控制器类中
public function uploadImage(Request $request)
{
$validator = Validator::make($request->all(), [
'image' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
]);
if ($validator->passes()) {
$input = $request->all();
$uploadedImage = $input['image'];
// put image to storage/app/public/uploads/images
$name = Storage::put('/public/uploads/images/', $uploadedImage);
$visibility = Storage::getVisibility($name);
// set visibility to true
Storage::setVisibility($name, 'public');
// get the url of the uploaded file
$url = Storage::url($name);
// return the url
return response()->json(['url' => $url]);
}
return response()->json(['error'=>$validator->errors()->all()]);
}
文件应存储在目录storage/app/public
中,因此请确保您的文件存储在此目录中
保存文件后,请确保通过传递文件名作为参数来获取文件的url。。下面是我如何实现的
html表单
<form action="" method="post" id="jobImage">
<div class="form-group">
<input type="file" class="form-control" id="image" name="image">
</div>
<input type="button" value="Upload Image" onclick="uploadImage()" class="btn btn-default" />
</form>
web.php中的路由
Route::post('/uploadImage','ControllerClass@uploadImage');
在控制器类中
public function uploadImage(Request $request)
{
$validator = Validator::make($request->all(), [
'image' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
]);
if ($validator->passes()) {
$input = $request->all();
$uploadedImage = $input['image'];
// put image to storage/app/public/uploads/images
$name = Storage::put('/public/uploads/images/', $uploadedImage);
$visibility = Storage::getVisibility($name);
// set visibility to true
Storage::setVisibility($name, 'public');
// get the url of the uploaded file
$url = Storage::url($name);
// return the url
return response()->json(['url' => $url]);
}
return response()->json(['error'=>$validator->errors()->all()]);
}
文件夹是符号链接的,但是图像在那里吗?图像在那里尝试在存储之前添加/吗?否则,它将尝试加载相对于网页的文件夹,而不是从网页根目录加载。您的
标记所在的网页的URL是什么?(homestead)和前面的斜杠不起任何作用:(文件夹是符号链接的,但是图像在那里吗?图像在那里尝试在存储之前添加/吗?否则,它将尝试相对于网页加载文件夹,而不是从网页根目录加载。您的
标记所在的页面的URL是什么?(homestead)和前面的斜杠不起任何作用:(是的,这也不起作用,将/storage/89cdd31f2e0eeacceff96c2a0abb25f.jpeg
作为路径。是的,这也不起作用,将/storage/89cdd31f2e0eeacceff96c2a0abb25f.jpeg
作为路径。