1

我在控制器中有一个功能

    public function upload(Request $request)
        {
 $file = $request->file('File');
 $destinationPath = 'uploads';
 $file->move($destinationPath,$file->getClientOriginalName());
    
        }

如果我在日志中发送 $request 它会显示类似这样的内容

array (
  '_id' => 'tuYDOc644W6DDgAS',
  '_token' => 'FerVRJvJWtnzv91TGuFRpIeT173aD9pH2o9Pqcu9',
  'upload_column' => 'File',
  'id' => 'WU_FILE_0',
  'name' => '134772132_217259409961521_6013657189083751736_o.jpg',
  'type' => 'image/jpeg',
  'lastModifiedDate' => '2/7/2021, 6:44:12 AM',
  'size' => '629882',
  '_file_' => 
  Illuminate\Http\UploadedFile::__set_state(array(
     'test' => false,
     'originalName' => '134772132_217259409961521_6013657189083751736_o.jpg',
     'mimeType' => 'image/jpeg',
     'error' => 0,
     'hashName' => NULL,
  )),
) 

但这给出了“在 null 上调用成员函数 move()”

我正在使用laravel-admin 包,如何正确保存文件并获取有关文件的信息?

4

4 回答 4

0

我刚刚发现,它与 laravel-admin 包有点不同

请求对象是

array (

  '_id' => 'tuYDOc644W6DDgAS',

  '_token' => 'FerVRJvJWtnzv91TGuFRpIeT173aD9pH2o9Pqcu9',

  'upload_column' => 'File',

  'id' => 'WU_FILE_0',

  'name' => '134772132_217259409961521_6013657189083751736_o.jpg',

  'type' => 'image/jpeg',

  'lastModifiedDate' => '2/7/2021, 6:44:12 AM',

  'size' => '629882',

  '_file_' => 

  Illuminate\Http\UploadedFile::__set_state(array(

     'test' => false,

     'originalName' => '134772132_217259409961521_6013657189083751736_o.jpg',

     'mimeType' => 'image/jpeg',

     'error' => 0,

     'hashName' => NULL,

  )),
) 

我可以像这样获取文件名和文件并存储它们

Storage::disk('public')->put($request->name, $request->_file_);
于 2021-02-07T12:41:12.527 回答
0

尝试编辑这个。

从:

$file = $request->file('File');

至:

$file = $request-> File; //Use file input tag's name attribute here.

希望这会有用。

于 2021-02-07T03:12:19.510 回答
0

您可以使用 laravel 存储:https ://laravel.com/docs/8.x/filesystem#the-public-disk

只需要3个基本步骤

  1. 从命令创建符号链接:php artisan storage:link
  2. 在 config 目录中配置文件系统: public_path('storage') => storage_path('app/public')
  3. 保存文件:Storage::disk('public')->put('file_name', 'file');
于 2021-02-07T04:43:06.117 回答
0

您可以使用以下步骤:

  1. 通过您的有效 mime 验证请求的文件:
$this->validate($request, [
    'File' => ['required', 'mimes:jpeg,gif,bmp,png', 'max:2048']
]);
  1. 从请求中获取文件
$image = $request->file('File');
  1. 重命名给定的文件名
// get the original file name and replace any spaces with _
// For example, Business Cards.png = timestamp()_business_cards.png
$filename = time()."_". preg_replace('/\s+/', '_', strtolower($image->getClientOriginalName()));
  1. 将图像移动到该位置(公开)
$tmp = $image->storeAs('uploads', $filename, 'public');
于 2021-02-07T07:34:55.027 回答