【发布时间】:2015-06-07 10:56:39
【问题描述】:
我使用Dropzone 处理我的 Symfony2 项目中的文件上传。
如果我上传小于 1mb 的文件,它可以正常工作,但是当我上传超过 1mb 的文件时,它会引发异常。
我认为问题出在 Dropzone 的 maxFilesize 配置上,但事实并非如此。它正在工作,因为它显示文件大小超过我设置的最大大小的消息。
我的表格:
<form id="quickUpload" action="{{ path('upload_process') }}" method="put" enctype="multipart/form-data" class="dropzone">
<div class="fallback">
<input name="file" type="file" multiple />
</div>
</form>
Javascript:
Dropzone.options.quickUpload = {
addRemoveLinks: true,
dictDefaultMessage: "Drop files to upload (or click)",
maxFilesize: 5,
init: function () {
this.on("success", function (file, response) {
file.serverId = response.id;
});
this.on("removedfile", function (file) {
if (!file.serverId) {
return;
}
var url = "{{ path("delete_upload") }}";
$.ajax({
url: url,
type: 'POST',
data: {id: file.serverId},
dataType: 'json',
success: function (data) {
console.log("File Deleted");
},
error: function () {
console.log("File Delete Error");
}
});
});
}
}
控制器:
/**
* @Route("/upload_process", name="upload_process")
* @Method("PUT")
*/
public function uploadProcessAction(Request $request) {
if ($request->isXmlHttpRequest()) {
$files = $request->files;
$em = $this->getDoctrine()->getManager();
$ids = [];
foreach ($files as $file) {
$document = new Document();
$document->setUploader($this->getUser())
->setFile($file);
$em->persist($document);
$ids[] = $document;
}
$em->flush();
return new JsonResponse(['id' => $ids[0]->getId()]);
}
}
【问题讨论】:
-
例外是......?你试过阅读它的信息吗?
-
一些 SQL 异常。当我将光标悬停在文件上时,它会显示以下消息:执行 INSERT INTO Document (name, type, description, extension, dateUploaded, path, uploader_id) VALUES (?, ?, ?, ?, ?, ?, ?) 似乎它一直在向数据库中插入空值。
-
那么为什么这些值是空的?
-
我不知道为什么会这样。当我上传小于 1mb 的文件时,不会发生这种情况。
-
所以调试它。这是一个面向开发者的社区。span>
标签: javascript symfony dropzone.js