Как сохранить образ src base64 на сервере (хранилище папок)?

#laravel #image #file #base64 #storage

#laravel #изображение #файл #base64 #Хранение

Вопрос:

У меня есть форма, содержащая тег img в атрибуте src, у меня есть изображение base 64, я хочу сохранить это изображение в папке общего хранилища.

приведенный ниже скрипт работает нормально, за исключением того, что он сохраняет изображение в формате png, но при предварительном просмотре я ничего не вижу!!!

js ajax :

         $('#form').submit(function(e) {
            e.preventDefault();
            var formData = new FormData(this);
            formData.append('imgsrc',$('#thumbnail_pic').attr('src')),
            $.ajax({
                headers: { 'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content') },
                url: "{{ route('file.upload') }}",
                data: formData,
                type: 'post',
                async: false,
                processData: false,
                contentType: false,
                success:function(data){
                    console.log(data);
                    alert('uploaded');
                }
            });
    });
  

контроллер :

     $image = $request->input('imgsrc');
    $image = str_replace('data:image/png;base64,', '', $image);
    $image = str_replace(' ', ' ', $image);
    $imageName = 'test.png';
    $success= Storage::disk('public')->put($imageName, base64_decode($image));
  

Комментарии:

1. Как я понял из вашего вопроса, проблема не в сохранении, поскольку он уже сохраняется, сохраненный файл неверен. Сначала проверьте, что форма содержит несколько частей в параметре encryption, а затем убедитесь перед сохранением файла, что входные данные являются file

2. форма уже имеет многосоставность в параметрах шифрования, для входного типа file у меня его нет в форме, я создал это изображение из скриншота и сохранил его в img

3. if (preg_match(‘/^data:image/(w );base64,/’, $image)) { $data = substr($image, strpos($image, ‘,’) 1); $ imageName = ‘test.png’; $success= Хранилище:: диск (‘общедоступный’)-> поместить($imageName, base64_decode($ data)); } это может помочь

4. У меня нет данных: изображение, у меня есть данные: приложение / октет-поток; base64,….

5. тогда вот почему у вас эта проблема, это означает, что ваша строка $image = str_replace(‘data: image / png;base64,’, «, $ image); не работает. это не повлияет на строку. попробуйте: str_replace(‘data:application /octet-stream;base64,’, «, $image);