Dropzone.js“Undefined index:file”如何使用Laravel?

时间:2017-03-02 03:20:01

标签: javascript php laravel laravel-5 dropzone.js

我正在使用基于OctoberCMSLaravel

我有一个可用于上传文件的HTML表单。

<form class="dropzone" method="POST" action="/upload.php" enctype="multipart/form-data">

    <input type="hidden" name="_handler" value="onUpload" />

    <div class="fallback">
        <input type="file" name="file">
    </div>

    <input type="submit" value="Upload" />

</form>

悬浮窗

我正在尝试添加Dropzone.js。它说你只是将类添加到表单中。

来自Dropzone docs:
http://www.dropzonejs.com/#usage

上传的文件可以像处理这样的html输入一样处理:

<input type="file" name="file" />

在添加Dropzone之前,这就是我的表单类型和名称。

错误

但是当我在upload.php中找到这一行时,我收到一个错误:

$inputName = basename($_FILES['file']['name']);
$inputExtension = pathinfo($inputName, PATHINFO_EXTENSION);

Error: Undefined index: file

但它之前没有使用Dropzone,使用相同的名称'file'。

Laravel

如果使用:

,它会毫无错误地通过
$inputName = Input::file('file');

但是现在我很难获得文件扩展名,因为它不再是使用Input :: file的变量。

1 个答案:

答案 0 :(得分:1)

您可以在控制器中执行

$inputExtension = request('file')->extension();
$path = request('file')->path();
$file = $request->file('file');

<强>更新

请将请求传递给您的控制器并重命名您的输入以避免与Laravel'文件'混淆。

public function store(Request $request)
{
    $file = $request->file('image');
    $extension = $request->image->extension(); //or
    $originalExtension = $file->getClientOriginalExtension();

    $path = $request->image->path();
}

10月CMS如何做到

$extension = Input::file('file')->getClientOriginalExtension();
$name = Input::file('file')->getClientOriginalName();

所以关键是使用getClientOriginalExtension();