如何上传文件(Laravel)

Posted

技术标签:

【中文标题】如何上传文件(Laravel)【英文标题】:How to upload a file (Laravel) 【发布时间】:2018-01-09 10:34:33 【问题描述】:

我想在 Laravel 中上传文件:

    我把这段代码放在路由中

    Route::post('upload', 'myconttest@test')->name('upload');
    

    并将这段代码放入控制器中

    function test(Request $request)
        $file=$request->file('myfile');
        $filename=$file->getClinetOriginalName();
        //  $projectname;
        $path='files/';
        $file->move($path,$filename);
    
    

我在公共文件中创建了一个文件夹。代码运行没有错误,但文件没有保存。

【问题讨论】:

变量 $file 的转储显示什么? 你的表单有enctype="multipart/form-data"属性,否则表单不接受文件

这是我的表单
不幸的是它没有用 【参考方案1】:

    确保您的表单已启用上传文件。因此,请检查是否设置了以下属性。

    <form action"" 'files' => true>

    使用以下命名空间

    use Illuminate\Support\Facades\Input;

    然后试试这个:

    $file = Input::file('myfile'); $filename = $file->getClinetOriginalName(); move_uploaded_file($file->getPathName(), 'your_target_path/'.$filename);

【讨论】:

【参考方案2】:

这是一个工作代码,请看这个

 public function store(Request $request)
    

         $checkval = implode(',', $request->category);
         $input = $request->all();
         $input['category'] = $checkval;

         if ($request->hasFile('userpic')) 
          $userpic = $input['pic'];
          $file_path = public_path("avatars/$userpic");
          if(File::exists($file_path)) 
              File::delete($file_path);
          
          $fileName = time().$request->userpic->getClientOriginalName();
          $request->userpic->move(public_path('avatars'), $fileName);
          $input['userpic'] = $fileName;
          Product::create($input);
          return redirect()->route('productCRUD.index')->with('success','Product created successfully');
           
    

【讨论】:

你弄错了它的工作代码我检查了很多次,首先你必须检查 $request ->all() by print_r()【参考方案3】:

我想你可以试试这个:

首先你给公用文件夹中的文件夹权限

function test(Request $request)
    $file=$request->file('myfile');
    $filename=$file->getClinetOriginalName();
    $file->move(public_path().'/files/', $filename);

希望这对你有用!!!

【讨论】:

【参考方案4】:

在控制器测试功能中,您需要给出文件夹的公共路径,例如

$path = public_path('files/');

用于在给定的公用文件夹路径上移动文件。

【讨论】:

对不起,我在 public_path() 中的错误,它需要一个文件夹路径作为参数

以上是关于如何上传文件(Laravel)的主要内容,如果未能解决你的问题,请参考以下文章

如何在文件上传期间保持页面可编辑(Laravel)?

如何防止在laravel中上传相同的文件

Laravel如何检查文件是不是成功上传?

如何使用 vuejs 和 laravel 使用块方法上传大文件?

如何使“上传文件”不是必需的 - Laravel 8

如何使用 Laravel + React 检查上传文件的类型?