这是我以前的帖子:Laravel inserting normal image, value become null
感谢您在上一篇文章中给我的建议。现在我有另一个问题。我想寻求帮助,并教我这个问题。
我目前想将图像路径保存在数据库中。正如之前提到的那样。我的数据库现在正在保存值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 = \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
您的文件将保存在“存储/应用/公共文件夹”中。
如果您的文件没有保存,则请允许并允许您的项目文件夹的权限。
关于php - 续:网址转换为字符串并保存问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59999108/