после изменения размера аватара пользователя с изображением вмешательства я пытаюсь сохранить его в базе данных octobercms следующим образом:
if (Input::hasFile('avatar')) {
$file= Input::file('avatar');
$filenamewithextension = $file->getClientOriginalName();
//get filename without extension
$filename = pathinfo($filenamewithextension, PATHINFO_FILENAME);
//get file extension
$extension = $file->getClientOriginalExtension();
//filename to store
$filenametostore = $filename.'_'.time().'.'.$extension;
Storage::put('public/profile_images/'. $filenametostore, fopen($file, 'r+'));
Storage::put('public/profile_images/thumbnail/'. $filenametostore, fopen($file, 'r+'));
//Resize image here
$thumbnailpath ='storage/app/public/profile_images/thumbnail/'.$filenametostore;
$img = Image::make($file->getRealPath());
$img->crop(request('w'), request('h'), request('x1'), request('y1'));
$img->save($thumbnailpath);
$user->avatar= $filenametostore;
}
я получаю эту ошибку:
The avatar must be an image.
C:\wamp643\www\october3\vendor\october\rain\src\Database\Traits\Validation.php line 340
я действительно не знаю, что делать, я новичок.
пожалуйста, помогите мне!!
вы просто устанавливаете имя файла, вы должны указать полный путь к изображению.
Assuming you have already
avatar
attachment relation in user model
public $attachOne = [
'avatar' => ['System\Models\File']
];
replace
$user->avatar = $filenametostore;
with
$user->avatar = storage_path($thumbnailpath);
может быть, это должно сработать.
если сомневаетесь, прокомментируйте.
Можете ли вы поделиться информацией о dd($user->avatar);
после назначения, и где вы пишете этот код.
это результат dd ($ user-> avatar): images (3)_1540464305.jpg
. и для части кода: ** RainLab \ User \ Components \ account.php **
$user->avatar=$thumbnailpath; dd($user->avatar);
отображает это: "storage/app/public/profile_images/thumbnail/images (2)_1540466712.jpg"
хорошо, может быть, вы забыли добавить storage_path()
, в ответ на его $user->avatar = storage_path($thumbnailpath);
, чтобы ваш путь был от root, может быть, я обновил его, вы использовали его до того, как я обновил, я думаю
Я что-то тестирую: `$ user-> avatar = Input :: file ('avatar'); dd ($ user-> avatar); and i get this :
UploadedFile {# 596 ▼ -test: false -originalName: "images (3) .jpg" -mimeType: "image / jpeg" -size: 9300} `
да, это нормально, но это изображение не будет обрезано, я думаю, вы можете попробовать этот $user->avatar = storage_path($thumbnailpath);
=> $user->avatar
нужен полный путь ИЛИ экземпляр file
я думаю, что $ user-> avatar принимает только такой объект, как я показал вам Input :: file ('avatar'), поэтому мне нужен способ конвертировать изображение в файл, например объект file_; У меня есть тестовый путь к хранилищу, но все та же проблема
проверьте это: octobercms.com/docs/database/attachments#creating-attachment s из официального документа, просто попробуйте, если он не работает, мы можем использовать что-то еще
если я напишу это: $thumbnailpath ='C:wamp643/www/october3/storage/app/public/profile_images/thumbnail/'.$filenametostore
, я получаю ту же ошибку, что и первый: Аватар должен быть изображением
Я думаю, мне нужен способ преобразовать результат на файл-экземпляр, как вы сказали
ваш путь неверен: '' C: wamp643 / www '<= вам нужно добавить 'C:/wamp643/www
- или лучше использовать storage_path
, поскольку он нормализует путь с помощью propr directory separator
Я сделал то же, что и ты, но ничего не происходит, такая же проблема
чтобы преобразовать файл-instace, вы можете использовать fromFile($filePath)
, но снова потребуется путь, такой же, как здесь $file = new System\Models\File; $file->fromFile('/path/to/avatar.jpg');
, поэтому я предполагаю, что что-то отсутствует, я проверю свой локальный, воспроизведя это
вы используете этот образ lib http://image.intervention.io/api/make
в crop
, верно?
посмотри, что я сделал: $file = new System\Models\File; $file->fromFile($thumbnailpath); $user->avatar=$file
, но я получаю это: Класс RainLab \ User \ Components \ System \ Models \ File не найден
Привет ты все еще там
хорошие новости, сэр, я решил это: $ file = new \ System \ Models \ File, как вы сказали вчера, я просто добавляю \
так что большое спасибо за вашу помощь, это было очень интересно
спасибо большое, но проблема та же Ничего не изменилось