无法在POST请求中访问上传的文件数据

时间:2016-06-17 21:04:38

标签: php ajax laravel dropzone.js

即使我做了所有事情,也可能会发现我的错误。

我使用dropzone.js插件进行文件上传,然后我有一个控制器来处理保存这个文件,但是在控制器中我实际上看不到文件数据。

预requisits: php.ini没问题 POST请求没问题 在localhost(XAMP)上运行

这是我最终得到的一个简约的例子(仍然不起作用)

前端

@extends('layouts.app')
@section('content')       
    <!-- Change /upload-target to your upload address -->
    <form action="{{url('attachment')}}" class="dropzone"></form>
@endsection
@section('scripts')
    <script src="https://rawgit.com/enyo/dropzone/master/dist/dropzone.js"></script>
    <link rel="stylesheet" href="https://rawgit.com/enyo/dropzone/master/dist/dropzone.css">
@endsection

ROUTE

Route::group(['middleware' => 'auth'], function () {
    Route::post('attachment','AttachmentController@Save');
});

控制器

class AttachmentController extends Controller
{
    public function Save()
    {
        var_dump(Input::get());
    }
}

POST请求

-----------------------------18028969725576
Content-Disposition: form-data; name="file"; filename="3.jpg"
Content-Type: image/jpeg

ÿØÿá�Exif��II*������������ÿì�Ducky�����(��ÿámhttp://ns.adobe.com/xap/1.0/�<?xpacket begin=""
 [...]

响应

array(0) {
}

1 个答案:

答案 0 :(得分:0)

使用$request->file('file')代替Input::get()。例如,请尝试下面的代码段将其保存在路径storage/exports的服务器中。

确保在存储文件夹中创建exports文件夹

class AttachmentController extends Controller
{
    public function Save(Request $request)
    {
                $request->file('file')->move(
                     storage_path('exports'), 'uploadedFile.jpg'
                );

    }
}