php - 续:网址转换为字符串并保存问题
问题描述
这是我以前的帖子:Laravel 插入普通图像,值变为空
谢谢大家在之前的帖子里给我建议。现在我有另一个问题。我想寻求帮助并教我解决这个问题。
我目前想将图像路径保存在我的数据库中。正如之前的帖子中提到的那样。我的数据库现在正在保存值 1 而不是路径。这是我的功能上传代码。
public function upload(Request $request, Task $task)
{
if(isset($_POST['delete'])) {
$task->delete();
return redirect('/');
}
else
{
$task->image = \Storage::disk('public')->put('image', Request::file('image'));
$url = Storage::url('image');
$url= urldecode(string ($url));
$url->save();
$task->save();
return redirect('/');
}
我也想在我的welcome.blade.php 中显示它。那么,我将添加和更改什么?
这是我的所有代码:
public function index()
{
$user = Auth::user();
return view('welcome',compact('user'));
}
public function add()
{
return view('add');
}
public function create(Request $request)
{
$task = new Task();
$task->description = Request::get('description');
$task->user_id = Auth::id();
$flagInserted = \Storage::disk('public')->put('image', Request::file('image'));
$url = '';
if ($flagInserted) {
$url = Storage::url('image');
}
$task->image = $url;
$duplicate = Task::where('description',Request::get('description'))->first();
if($duplicate)
{
print_r("The data is exists");
}
else
{
$task->save();
}
return redirect('/');
}
public function edit(Task $task)
{
if (Auth::check() && Auth::user()->id == $task->user_id)
{
return view('edit', compact('task'));
}
else {
return redirect('/');
}
}
public function update(Request $request, Task $task)
{
if(isset($_POST['delete'])) {
$task->delete();
return redirect('/');
}
else
{
$task->description = Request::get('description');
$task->save();
return redirect('/');
}
}
public function upload(Request $request, Task $task)
{
if(isset($_POST['delete'])) {
$task->delete();
return redirect('/');
}
else
{
$flagInserted = \Storage::disk('public')->put('image', Request::file('image'));
$url = '';
if ($flagInserted) {
$url = Storage::url('image');
}
$task->image = $url;
$task->save();
return redirect('/');
}
}
public function storeTask(){
$task= new Task();
$task->name = request('name');
$task->description = request('description');
$task->image = request('image');
$task->save();
return redirect('/task');
}
我已经阅读了 Laravel 页面。但不太确定,我该如何解决这个问题。
解决方案
如果文件保存与否,下面将返回 1 或 0。这就是为什么它将 1 插入到您的数据库中:
\Storage::disk('public')->put('image', Request::file('image'))
成功保存后,要获取文件 url,您可以使用以下代码:
$url = \Storage::url('file.jpg');
所以你的代码将是:
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class FileuploadController extends Controller
{
//
public function index() {
return view('fileupload');
}
public function save(Request $request) {
$image = $request->file('image');
$fileName = time() . '.' . $image->getClientOriginalExtension();
$img = \Image::make($image->getRealPath());
$img->stream(); // <-- Key point
$flagInserted = \Storage::disk('public')->put($fileName, $img);
$url = '';
if ($flagInserted) {
$url = \Storage::url('app/public/' . $fileName);
}
dd($url);
}
}
如果您遇到诸如“找不到类图像”之类的错误,请执行以下操作:
composer require intervention/image
您的文件将保存在“storage/app/public 文件夹”中。如果您的文件未保存,请允许并允许您的项目文件夹。
推荐阅读
- windows - 在条件循环中运行 cmd 命令的脚本
- postgresql - PostgreSQL 中的 for 循环(来自两个表的 for 循环)
- php - 将数据从旧 MySQL 模式迁移到新模式
- javascript - null 或空检查对象中的多个属性
- ios - iOS 如何在应用未运行时处理 FCM
- google-cloud-platform - 所有构建的 gcloud 步骤超时设置全局限制在哪里?
- html - 如何删除img标签下的auto p标签
- python - 如何在不丢失数据的情况下连接具有相同形状的两列?
- java - 使用多个 ResponseObserver.onNext 会卡住服务 - gRPC Java
- gitlab-ci-runner - 在本地运行 gitlab-runner 时如何使用子模块?