Javascript dropzone.js中的模拟文件拖放和上载
我正在为一个包含dropzone.js元素的网页编写一个测试工具,我们称之为Javascript dropzone.js中的模拟文件拖放和上载,javascript,file-upload,dropzone.js,Javascript,File Upload,Dropzone.js,我正在为一个包含dropzone.js元素的网页编写一个测试工具,我们称之为myDropzone,由$(“#我的dropzone”)元素表示 问题: 我可以使用javascript模拟将可上载文件拖放到dropzone上吗? 我认为(但我不确定)这可能需要: 在javascript中创建类似文件的对象,然后 在myDropzone上触发丢弃事件 第2步很简单,但第1步需要创建一个类似文件的对象(包含真实的数据流?),一旦删除该对象,该对象实际上可以上传 我尝试创建虚拟文件,例如,然后使用myDr
myDropzone
,由$(“#我的dropzone”)
元素表示
问题:
我可以使用javascript模拟将可上载文件拖放到dropzone上吗?
我认为(但我不确定)这可能需要:
myDropzone
上触发丢弃事件myDropzone.addFile(…)
,但这不会导致可上载的文件,因为没有数据负载
谢谢 我所能做的是从base64编码的文件(本例中为图像)创建一个Blob文件,并将其传递给addFile(),因此它实际上是在模拟删除文件
dropZone.addFile(base64toBlob(base64FileData, 'image/png'));
其中base64toBlob
为:
function base64toBlob(b64Data, contentType, sliceSize) {
contentType = contentType || '';
sliceSize = sliceSize || 512;
var byteCharacters = atob(b64Data);
var byteArrays = [];
for (var offset = 0; offset < byteCharacters.length; offset += sliceSize) {
var slice = byteCharacters.slice(offset, offset + sliceSize);
var byteNumbers = new Array(slice.length);
for (var i = 0; i < slice.length; i++) {
byteNumbers[i] = slice.charCodeAt(i);
}
var byteArray = new Uint8Array(byteNumbers);
byteArrays.push(byteArray);
}
var blob = new Blob(byteArrays, {type: contentType});
return blob;
}
函数base64toBlob(b64Data、contentType、sliceSize){
contentType=contentType | |“”;
切片大小=切片大小| | 512;
var byteCharacters=atob(b64Data);
var ByteArray=[];
对于(变量偏移量=0;偏移量
完整演示