Laravel - преобразовать модель изображения вмешательства (\ Intervention \ Image \ Image) в модель UploadedFile (\ Illuminate \ Http \ UploadedFile)

Второй параметр метода Storage::put принимает только модель \Illuminate\Http\UploadedFile(или File). Как преобразовать \Intervention\Image\Image в UploadedFile без сохранения в хранилище?

if($request->hasFile('image')) {
  $image = $request->file('image');
  $image_resize = Image::make($image->getRealPath());
  $image_resize->resize(300, 300);
  $image_resize->encode();
  $imagePath = Storage::put(public_path(), new File($image_resize), 'public');
}

person FVVID    schedule 11.07.2017    source источник


Ответы (1)


Я думаю, вам нужно будет изменить свой код на что-то вроде...

$image_resize->encode() на $image_resize->stream()->__toString();, так как я думаю, что encode() будет излишним.

Затем с Storage::put(public_path(), new File($image_resize), 'public') по Storage::disk('local')->put($image->getClientOriginalName(), $image->stream()->__toString(), 'public');

Обратите внимание, что имя файла задается исходным именем... я бы рекомендовал изменить его на уникальное имя, если вам нужна помощь, я бы начал с https://laracasts.com/discuss/channels/general-discussion/how-to-generate-long-unique-name-for-filename?page=1

person JeffBeltran    schedule 11.07.2017
comment
@FVVID нет проблем, рад помочь. Если этот ответ решил вашу проблему, отметьте его как принятый. - person JeffBeltran; 14.07.2017