【问题标题】:how to read FormData object in Laravel如何在 Laravel 中读取 FormData 对象
【发布时间】:2017-11-05 08:48:15
【问题描述】:

我正在尝试将表单提交到 Laravel 5 控制器方法。我知道在 php 中,您可以定义一个 FormData 对象,将输入字段附加到该对象并将其发送到服务器,您现在可以使用输入字段名称提取值。

像这样:

var form_data = new FormData();
formdata.append('file_name', 'some_file_name_from_form.png');

form_data 在ajax 调用中作为data 发送时,我可以使用$_FILES['file_name']['name']; 在PHP 中获取文件。

所以我在 Laravel 控制器方法中尝试了同样的逻辑。我试图在$request 对象中获取文件名,但只得到了空值。

我的控制器方法:

public function postImage(Request $request)
{
    $file = $request->get('file_name');

    dd($file);
}

但是当我dd整个请求时,我看到了这个奇怪的对象:

数组:1 [ "file_name" => UploadedFile {#199 -测试:假 -originalName:“work-fitness_00255959.png” -mimeType:“图像/png” -尺寸:34215 -错误:0 #hashName:空 路径:“/tmp” 文件名:“phpVodsUg” 基本名称:“phpVodsUg” 路径名:“/tmp/phpVodsUg” 延期: ”” 真实路径:“/tmp/phpVodsUg” 时间:2017-06-04 12:42:26 m时间:2017-06-04 12:42:26 c时间:2017-06-04 12:42:26 索引节点:17573243 尺寸:34215 烫发:0100600 拥有者:1000 组:1000 类型:“文件” 可写:真 可读:真 可执行:假 文件:真 目录:假 链接:假 } ]

请问如何通过名称获取通过 Ajax 中的FormData() 对象发送的图像?

感谢您的帮助

【问题讨论】:

    标签: ajax laravel file laravel-5.4


    【解决方案1】:

    你可以这样做。

    // get the `UploadedFile` object
    $file = $request->file('file_name');
    $file = $request->file_name;
    
    // get the original file name
    $filename = $request->file('file_name')->getClientOriginalName();
    $filename = $request->file_name->getClientOriginalName();
    

    查看文档以获取更多信息https://laravel.com/docs/5.4/requests#retrieving-uploaded-files

    上传文件http://api.symfony.com/3.0/Symfony/Component/HttpFoundation/File/UploadedFile.html可用的api方法

    【讨论】:

      【解决方案2】:

      下面的代码对我有用:

      $("#your_form").submit(function(e){
          e.preventDefault();
          var form = $(this);
          var url = form.attr("action");
          var data = new FormData(form[0]);
          $.ajax({
              url: url,
              type: 'POST',
              data: data,
              cache: false,
              processData: false,
              contentType : false,
              success: function (data) {
                  console.log(data);
              },
              error: function (jqXHR, textStatus, errorThrown) {
                  console.log(jqXHR, textStatus, errorThrown);
              }
          });
      }); 
      

      我的问题在于属性 contentType。所以,我设置为false就ok了!

      【讨论】:

        猜你喜欢
        • 2023-04-03
        • 2016-11-05
        • 1970-01-01
        • 2021-06-14
        • 1970-01-01
        • 2016-08-15
        • 1970-01-01
        • 1970-01-01
        • 2018-11-27
        相关资源
        最近更新 更多