我有以下Laravel代码,它从API接收数据并将它们存储在数据库中。
$sample = Sample::findOrFail($id);
$new_sample = $request->except('filename');
if ( $request->file('filename') ) {
if ( $sample->filename ) {
Storage::disk('documents')->delete($sample->filename);
}
$file = $request->file('filename');
$extension = $file->getClientOriginalExtension();
$new_sample->filename = $file->getFilename().'.'.$extension;
Storage::disk('documents')->put($file->getFilename().'.'.$extension, File::get($file));
}
if (!$sample->update($new_sample)) {
throw new HttpException(500);
}
我有以下错误Attempt to assign property of non-object
,我发现通过注释掉我指定文件名的行,错误不再出现。
$new_sample->filename = $file->getFilename().'.'.$extension;
所以,我猜问题就在这里。我也试过
$new_sample['filename'] = $file->getFilename().'.'.$extension;
但是它没有存储文件名。
有什么想法吗?
答案 0 :(得分:0)
您收到此错误,因为Request对象中没有文件。
这是因为您使用了错误的方法来检查文件。使用hasFile()
方法。所以你需要改变这个:
if ( $request->file('filename') ) {
对此:
if ($request->hasFile('filename')) {