2017-06-04 165 views
2

我正在尝试将ajax提交到Laravel 5控制器方法。我明白,在PHP中,您可以定义一个FormData对象,将输入字段附加到对象并将其发送到服务器,您现在可以使用输入字段名称提取值。如何阅读Laravel中的FormData对象

像这样:

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

form_data被作为data在Ajax调用发送,我可以通过使用$_FILES['file_name']['name'];得到PHP文件。

所以我在Laravel控制器方法中尝试了这种相同的逻辑。我试图抓住$request对象中的文件名,但只有null。

我控制器的方法:

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

    dd($file); 
} 

但是,当我dd整个请求,我看到这个奇怪的物体:

array:1 [ "file_name" => UploadedFile {#199 -test: false -originalName: "work-fitness_00255959.png" -mimeType: "image/png" -size: 34215 -error: 0 #hashName: null path: "/tmp" filename: "phpVodsUg" basename: "phpVodsUg" pathname: "/tmp/phpVodsUg" extension: "" realPath: "/tmp/phpVodsUg" aTime: 2017-06-04 12:42:26 mTime: 2017-06-04 12:42:26 cTime: 2017-06-04 12:42:26 inode: 17573243 size: 34215 perms: 0100600 owner: 1000 group: 1000 type: "file" writable: true readable: true executable: false file: true dir: false link: false } ]

请我如何才能图像通过FormData()对象阿贾克斯打发其名称?

感谢您的任何帮助

回答

4

您可以这样做。

$("#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); 
     } 
    }); 
}); 

我的问题是:

// 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

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

+0

非常感谢 –

0

代码波纹管工作对我来说可用在属性contentType中。所以,我设定为假,没关系!