我正在使用基于OctoberCMS的Laravel。
我有一个可用于上传文件的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'。
如果使用:
,它会毫无错误地通过$inputName = Input::file('file');
但是现在我很难获得文件扩展名,因为它不再是使用Input :: file的变量。
答案 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();