我将尝试上传文件(可以是任何类型),但在某些方式上传文件时遇到了问题。
使用
由于我想以以下方式上传多个订单和多个文件: 控制器
我还附上了图片,可以看出两者的区别。 一个是使用
我该如何解决这个问题?
欢迎提供建议或意见。谢谢。
使用
$request->file('file_name')
和 Storage::disk($disk)->put($path, $file);
可以正确地上传文件。然而,$file
参数只能通过 $request->file('file_name')
获得。由于我想以以下方式上传多个订单和多个文件: 控制器
foreach ( $filesArray as $key => $files ) {
$path = 'order/'.$order->id;
if ( isset($files[$i]) && !empty($files[$i]) ) {
for ( $j = 0; $j < count($files[$i]); $j++ ) {
$uploadedFile = FileHelper::upload($files[$i][$j], $path);
$orderFile = [];
$orderFile['order_id'] = $order->id;
$orderFile['file_id'] = $uploadedFile->id;
OrderFileModel::create($orderFile);
}
}
}
文件助手
static public function upload($file, $path, $disk = 's3')
{
$fileOrm = new FileModel;
$fileOrm->size = $file->getSize();
$fileOrm->extension = $file->getExtension();
$fileOrm->bucket_name = self::$BUCKET_NAME;
$fileOrm->type = self::getFileType($file->getExtension());
$fileOrm->key = Storage::disk($disk)->put($path, $file);
$fileOrm->created_time = now();
$fileOrm->save();
return $fileOrm;
}
我还附上了图片,可以看出两者的区别。 一个是使用
$request->file('file_name')
,另一个是使用$request->file_name
,它是blob类型。
下面这张图片会返回错误信息,说fstat() expects parameter 1 to be resource, object given
。我该如何解决这个问题?
欢迎提供建议或意见。谢谢。
$path = $request->file('avatar')->store( 'avatars/'.$request->user()->id, 's3' );
吗?否则,你需要使用类似于file_get_contents($files[$i][$j])的东西来获取临时文件的内容并手动处理它。 - j.steelmanfile_get_contents
来获取内容?根据文档,file_get_contents
需要在第一个参数中提供文件名,但是$files[$i][$j]
是一个对象。 - smchae