Как исправить зацикливание вставки файлов (получение невидимых данных), используя laravel - PullRequest
0 голосов
/ 10 марта 2020

У меня проблема, у меня есть модуль, в который мне нужно вставить изображение и детали карусели в хранилище и базу данных. но изображение не полностью вставлено в базу данных. только имя файла. этот модуль работает нормально и правильно вставляется на мой локальный сервер. проблема здесь после того, как я загружаю проект на сервер и затем пытаюсь загрузить изображение карусели, это происходит, когда я нажимаю кнопку и успешно вставляю файлы, выбранные в таблицу данных, которая не вставлена ​​в базу данных. Я действительно не понимаю, почему функция загрузки не работает должным образом, и после того, как страница refre sh происходит, мой скрипт выбирает pdf файл et c et c ..

Чтобы понять мое утверждение, я буду ребята, покажите вам пример выходных данных, а затем функционируйте.

  1. правильные файлы, которые я только загружаю, - это тот файл .png, однако, случается, что есть такие файлы, как pdf. .

Проблема: problem

База данных:

Таблица содержимого:

content_table

Файлы содержимого:

content_files

Ajax:

var carousel_data = new FormData();

$('#carousel_image').on('change',function(e){

        var files = e.target.files;

        $.each(files, function(i, file) {

            carousel_data.append('files[]', file);

        });
 });




$('#btn_carousel').on('click',function(e){

    e.preventDefault();
    var carousel_title = $('#carousel_title').val();
    var carousel_desc = $('#carousel_desc').val();
    var carousel_url = $('#carousel_url').val();

    carousel_data.append('carousel_title', carousel_title);
    carousel_data.append('carousel_desc', carousel_desc);
    carousel_data.append('carousel_url', carousel_url);
    $.ajax({

        url:'/insert_carousel_content',
        type:'post',
        data:carousel_data,
        dataType:'JSON',
        processData: false,
        contentType: false,
        success:function(res) {
            if(res == 'Success') {
                alert('Successfully Inserted');
            }
            else
            {
                alert('Please Fill The Blank.');
            }

            location.reload();
        },
        error:function(err) {
            alert('Failed To Insert');

        }
    })

});

Контроллер:

public function insert_carousel_content(Request $request) {

    $file_upload = $request->file('files');

    $carousel_title = $request->get('carousel_title');
    $carousel_desc = $request->get('carousel_desc');
    $carousel_url = $request->get('carousel_url');

    $author = Auth::user()->id;

    $now = new DateTime();

    DB::insert('INSERT INTO audit_trail (user,page,action,when_created) VALUES (?,?,?,?) ',[
        $author,
        'Carousel',
        'Inserting',
        $now
    ]);

    if($request->hasFile('files')) {

        DB::insert('INSERT INTO content (content_author,content_title,content_desc,content_link,content_page,content_status,when_created) VALUES (?,?,?,?,?,?,?) ',[

        $author,
        $carousel_title,
        $carousel_desc,
        $carousel_url,
        'carousel',
        'Approved',
        $now

        ]);




        $last_id_insert = DB::select('SELECT LAST_INSERT_ID() as id FROM content');
        foreach($last_id_insert as $result)
        {
          $id_last_inserted = $result->id;
        }

        foreach($file_upload as $value)
        {


            $name=$value->hashName();

            $value->move(public_path().'/storage/',$name);

            DB::insert('INSERT INTO content_files (content_id,file_name) VALUES (?,?) ',[

                 $id_last_inserted,
                 $name,



            ]);
        }

        return response()->json('Success');
    }
    else {

        DB::insert('INSERT INTO content (content_author,content_title,content_desc,content_link,content_page,content_status,when_created) VALUES (?,?,?,?,?,?,?) ',[

        $author,
        $carousel_title,
        $carousel_desc,
        $carousel_url,
        'carousel',
        'Approved',
        $now

        ]);

         return response()->json('Success');
    }

}

Img Sr c:

img source

Отображение пользователя:

user display

1 Ответ

0 голосов
/ 10 марта 2020

Как видите, изображения успешно сохраняются в базе данных, но проблема может заключаться в том, что ваш путь к хранилищу не имеет необходимых прав доступа. (Chmod 755)

Чтобы указать, что просто напишите в s sh sudo chmod -R 755 storage/

Из вашего поста я вижу, что image_name хранится в таблице базы данных, но изображение не сохраняется в ваш сервер.

Для отображения изображений из хранилища вы должны использовать: Storage::get('file_name.jpg');

Вы можете увидеть это здесь: https://laravel.com/docs/master/filesystem#retrieving -файлы

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