ArG*_*rGh 6 javascript jquery file-upload symfony dropzone.js
我正在尝试使用Dropzone.js上传生成的客户端文档(目前的图像).
// .../init.js
var myDropzone = new Dropzone("form.dropzone", {
autoProcessQueue: true
});
Run Code Online (Sandbox Code Playgroud)
一旦客户完成了他的工作,他只需要点击一个调用保存功能的保存按钮:
// .../save.js
function save(myDocument) {
var file = {
name: 'Test',
src: myDocument,
};
console.log(myDocument);
myDropzone.addFile(file);
}
Run Code Online (Sandbox Code Playgroud)
console.log()正确地返回了我的文档内容
data:image/png;base64,iVBORw0KGgoAAAANS...
Run Code Online (Sandbox Code Playgroud)
此时,我们可以看到进度条在放置区中上传文档但上传失败.
这是我的(标准dropzone)HTML表单:
<form action="/upload" enctype="multipart/form-data" method="post" class="dropzone">
<div class="dz-default dz-message"><span>Drop files here to upload</span></div>
<div class="fallback">
<input name="file" type="file" />
</div>
</form>
Run Code Online (Sandbox Code Playgroud)
我有一个收到邮件请求的Symfony2控制器.
// Get request
$request = $this->get('request');
// Get files
$files = $request->files;
// Upload
$do = $service->upload($files);
Run Code Online (Sandbox Code Playgroud)
从dropzone上传(通过拖放或点击)正在运行并且上传成功但是使用myDropzone.addFile()函数在我的控制器中返回一个空对象:
var_dump($files);
Run Code Online (Sandbox Code Playgroud)
返回
object(Symfony\Component\HttpFoundation\FileBag)#11 (1) {
["parameters":protected]=>
array(0) {
}
}
Run Code Online (Sandbox Code Playgroud)
我想我没有在保存功能中正确设置我的var文件.我试图创建JS图像(var img = new Image()...)但没有任何成功.
谢谢你的帮助 !
ArG*_*rGh 16
最后我发现了一个没有创建画布的工作解决方
function dataURItoBlob(dataURI) {
'use strict'
var byteString,
mimestring
if(dataURI.split(',')[0].indexOf('base64') !== -1 ) {
byteString = atob(dataURI.split(',')[1])
} else {
byteString = decodeURI(dataURI.split(',')[1])
}
mimestring = dataURI.split(',')[0].split(':')[1].split(';')[0]
var content = new Array();
for (var i = 0; i < byteString.length; i++) {
content[i] = byteString.charCodeAt(i)
}
return new Blob([new Uint8Array(content)], {type: mimestring});
}
Run Code Online (Sandbox Code Playgroud)
和保存功能:
function save(dataURI) {
var blob = dataURItoBlob(dataURI);
myDropzone.addFile(blob);
}
Run Code Online (Sandbox Code Playgroud)
该文件在dropzone中正确显示并已成功上载.我仍然需要处理文件名(我的文档名为"blob").
此处找到了dataURItoBlob函数:将数据URI转换为File然后附加到FormData
[编辑]:我终于在dropzone中编写了这个函数来完成这项工作.你可以在这里查看:https://github.com/CasperArGh/dropzone 你可以像这样使用它:
var dataURI = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAmAAAAKwCAYAAA...';
myDropzone.addBlob(dataURI, 'test.png');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12628 次 |
| 最近记录: |