我已经按照其docs上的描述完全安装了Spatie Media Library。但是,每次我尝试使用addMediaFromRequest('keyName')
保存媒体文件时,都会出现此错误:
当前请求在名为
keyName
的密钥中没有文件>[每个安装和入门指南,例如Laravel-News.com上的该指南,都告诉我将其放在控制器中:
if (isset($data['avatar'])) { $user->addMediaFromRequest('avatar')->toMediaCollection('avatars'); }
这也是我所做的。但是,我仍然收到此“ ...请求没有文件...”错误……这确实使我感到烦恼。我完全按照安装指南进行操作,但是没有用。
这是我的模型,控制器和视图在注册过程中的样子:
User.php:
use Glorand\Model\Settings\Traits\HasSettingsField; use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; use Illuminate\Support\Facades\Auth; use Spatie\Permission\Traits\HasRoles; use Spatie\Permission\Models\Role; use Spatie\MediaLibrary\HasMedia\HasMediaTrait; use Spatie\MediaLibrary\HasMedia\HasMedia; use Spatie\MediaLibrary\Models\Media; class User extends Authenticatable implements HasMedia { use Notifiable; use HasRoles; use HasSettingsField; use HasMediaTrait; // ... }
RegisterController.php(注意我的//注释):
protected function create(array $data) { $user = User::create([ 'name' => $data['name'], 'email' => $data['email'], 'password' => Hash::make($data['password']), ]); //If I check, if the avatar is set, I create a user without avatar if (isset($data['avatar'])) { $user->addMediaFromRequest('avatar')->toMediaCollection('avatars'); } //If I don't check it, it leads to "... request does not have a file ..." error $user->addMediaFromRequest('avatar')->toMediaCollection('avatars'); return $user; }
register.blade.php:
// ... <div class="form-group row"> <label for="avatar" class="col-md-4 col-form-label text-md-right">{{ __('Avatar (optional)') }}</label> <div class="col-md-6"> <input id="avatar" type="file" class="form-control" name="avatar"> </div> </div> // ...
其他控制器也一样,我希望可以上传头像。例如,我的UserController导致了同样的问题。
UserController.php
// ... public function update(Request $request, User $user) { if (isset($request->avatar)) { $user->addMediaFromRequest('avatar')->toMediaCollection('avatars'); } } // ...
但是,如果我转储
$request->avatar
,则它不是空的!我明白了:
Illuminate\Http\UploadedFile {#473 ▼
-test: false
-originalName: "23133.png"
-mimeType: "application/octet-stream"
-error: 1
#hashName: null
path: ""
filename: ""
basename: ""
pathname: ""
extension: ""
realPath: "/Users/myname/Desktop/Coding/MyProject/public"
aTime: 1970-01-01 00:00:00
mTime: 1970-01-01 00:00:00
cTime: 1970-01-01 00:00:00
inode: false
size: false
perms: 00
owner: false
group: false
type: false
writable: false
readable: false
executable: false
file: false
dir: false
link: false
}
我已经按照他们的文档中的描述完全安装了Spatie Media Library。但是,每次我尝试使用addMediaFromRequest('keyName')保存媒体文件时,都会出现此错误:当前...
我终于找到了我的错误。我的系统在装有Catalina的Mac上运行。问题是我使用php artisan serve
在本地托管我的项目。由于某些原因,在访问临时文件夹的权限方面存在问题。