Cont: преобразование URL в строку и сохранение проблемы - PullRequest
0 голосов
/ 31 января 2020

Это мой предыдущий пост: 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. Но не совсем уверен, и как я могу решить эту проблему.

Ответы [ 2 ]

1 голос
/ 31 января 2020

ниже вернет 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 / publi c». , Если ваш файл не сохранен, пожалуйста, разрешите и разрешите разрешение вашей папке проекта.

0 голосов
/ 31 января 2020

ты пробовал это? Request::file до $request->file

и

replce Illuminate\Support\Facades\Request до use Illuminate\Http\Request;

ссылка ссылка https://laravel.com/docs/6.x/filesystem#file - загрузка здесь вы можете см

use Illuminate\Http\Request; импортируется не Illuminate\Support\Facades\Request

 public function upload(Request $request, Task $task)
    {
        if (isset($_POST['delete'])) {

            $task->delete();
            return redirect('/');
        } else {


            $task->image = \Storage::disk('public')->put('image', $request->image);

            $task->save();
            return redirect('/');
        }
    }

ссылка ссылка https://laravel.com/docs/6.x/filesystem#storing -файлы


и для печати изображение внутри лезвия

Вы можете использовать функцию Storage::url() на laravel

EX: Storage::url($task->image) // here image value is coming from task table data

ссылка ссылка https://laravel.com/docs/6.x/filesystem#file -urls

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...