为什么我上传的文件没有反映在请求上,即使文件上传成功了?
HTML
<div id="upload_excel" class="dropzone form-control">
<div class="fallback">
<input name="file" type="file" multiple />
</div>
</div>
JS
var baseUrl = "{{ url('/') }}";
var token = "{{ Session::getToken() }}";
Dropzone.autoDiscover = false;
var myDropzone = new Dropzone("#upload_excel", {
paramName: "file",
acceptedFiles: ".xls,.xlsx",
maxFiles: 1,
maxFilesize: 10,
url: baseUrl + "/upload",
params: {
_token: token
}
});
控制器
class UploadsController extends Controller
{
public function upload(Request $request) {
return $file = $request->all();
}
}
请求预览 [ 请求回复
{"_token":"ePssa9sPZxTcRR0Q4Q8EwWKjODXQ8YpCcH8H9wRP","upload_date":"2016-08-02","file":{}}
我错过了什么或什么?
答案 0 :(得分:1)
我有一个像这样的控制器
public function upload(Request $request) {
// validation etc
// ...
// I have a table and therefore model to list all excels
$excelfile = ExcelFile::fromForm($request->file('file'));
// return whater ...
}
在我的ExcelFile模型中
protected $baseDir = 'uploads/excels';
public static function fromForm(UploadedFile $file) {
$excelfile = new static;
$name = time() . $file->getClientOriginalName();
$name = preg_replace('/\s+/', '', $name);
$excelfile->path = $excelfile->baseDir . '/' . $name;
$file->move($excelfile->baseDir, $name);
return $excelfile;
}
您还需要在模型中添加UploadedFile
use symfony\Component\HttpFoundation\File\UploadedFile;
我的dropzone定义如下,以确保正确的令牌处理
<form action="/users/{{ $id }}/media/excelupload" id="drop-zone" class="dz dropzone">
{{ csrf_field() }}
</form>
<script>
new Dropzone("#drop-zone", {
maxFilesize: 3, // MB
maxFiles: 10,
dictDefaultMessage: "Upload Excel.",
init: function() {
var known = false;
this.on("success", function(file, responseText) {
// do stuff
});
this.on('error', function() {
// aler stuff
});
this.on("addedfile", function() {
if (this.files[10]!=null){
this.removeFile(this.files[0]);
if (known === false) {
alert('Max. 10 Uploads!')
known = true;
}
}
});
}
});
</script>
我希望这会有所帮助