Javascript 获取文件';Dropzone.js上的MD5

Javascript 获取文件';Dropzone.js上的MD5,javascript,hash,dropzone.js,Javascript,Hash,Dropzone.js,我想计算Dropzone.js上传的每个图像的MD5校验和,这样用户可以安全地删除正确的图像(我在php部分计算MD5校验和) 我需要使用另一个库(或另一个库)创建MD5哈希,然后在单击“删除”按钮时将其与数据一起发送 目前: $Dropzone.autoDiscover = false; // Dropzone class: var myDropzone = new Dropzone("div#dropzonePreview", { maxFiles:5,

我想计算Dropzone.js上传的每个图像的MD5校验和,这样用户可以安全地删除正确的图像(我在php部分计算MD5校验和)

我需要使用另一个库(或另一个库)创建MD5哈希,然后在单击“删除”按钮时将其与数据一起发送

目前:

$Dropzone.autoDiscover = false;
    // Dropzone class:
    var myDropzone = new Dropzone("div#dropzonePreview", { 
        maxFiles:5,
        url: "up",
        acceptedFiles: ".png,.jpg,.gif,.jpeg",
        maxFilesize: 6,
        uploadMultiple: true,
        addRemoveLinks: true,

        removedfile: function(file) {
            var name = file.name;  
            var idform = document.getElementById('idform').value; //for me 
            var hash= md5(file); // not tested
            $.ajax({
                type: 'POST',
                url: 'del.php',
                data:"filename="+name+"&idform="+idform+"&hash="+hash,
                dataType: 'html'
            });
        var _ref;
        return (_ref = file.previewElement) != null ? _ref.parentNode.removeChild(file.previewElement) : void 0;        
      }

    });

问题是md5(文件)不起作用,我想它不是数据文件,我试图寻找数据来计算散列,但什么也没有找到。

我确信有更好的方法来做,但我已经做了,它将正确的散列发送到我的删除页面(del.php),我刚刚意识到,我还需要散列来避免相同文件的上传2次

我用过

Dropzone.autoDiscover=false;
//Dropzone类:
var myDropzone=新的Dropzone(“div#dropzonePreview”,{
最大文件数:5,
url:“upload.php”,
acceptedFiles:“.png、.jpg、.gif、.jpeg”,
最大文件大小:6,
uploadMultiple:true,
addRemoveLinks:是的,
//删除一个文件
removedfile:函数(文件){
var name=file.name;
var idform=document.getElementById('idform').value;//对于我
//启动SPARKMD5
var blobSlice=File.prototype.slice | | | File.prototype.mozSlice | | File.prototype.webkitSlice,
chunkSize=2097152,//读取2MB的块
chunks=Math.ceil(file.size/chunkSize),
currentChunk=0,
spark=新SparkMD5.ArrayBuffer(),
fileReader=新的fileReader();
fileReader.onload=函数(e){
log('read chunk nr',currentChunk+1,'of',chunk);
spark.append(e.target.result);//追加数组缓冲区
currentChunk++;
如果(当前块<块){
loadNext();
}否则{
console.log(“已完成加载”);
//启动DROPZONE部件
$.ajax({
键入:“POST”,
url:'del.php',
数据:“filename=“+name+”&idform=“+idform+”&hash=“+spark.end(),//spark.end是MD5
数据类型:“html”
});
var_ref;
return(_ref=file.previewElement)!=null?_ref.parentNode.removeChild(file.previewElement):void 0;
//端部下降区部分
}
};
fileReader.onerror=函数(){
console.warn('哎呀,出了点问题');
};
函数loadNext(){
var start=currentChunk*chunkSize,
end=((start+chunkSize)>=file.size)?file.size:start+chunkSize;
readAsArrayBuffer(blobSlice.call(file,start,end));
}
loadNext();
//端部火花D5
}
});
我不确定是否需要fileReader.onerror和load next。 无论如何,当需要在单击“删除”按钮时发送散列时,它就可以工作了,但是我仍然在寻找一种更好的方法,在上传之前比较md5

    Dropzone.autoDiscover = false;
        // Dropzone class:
        var myDropzone = new Dropzone("div#dropzonePreview", { 
            maxFiles:5,
            url: "upload.php",
            acceptedFiles: ".png,.jpg,.gif,.jpeg",
            maxFilesize: 6,
            uploadMultiple: true,
            addRemoveLinks: true,

        //to remove one file
            removedfile: function(file) {
                var name = file.name;  
                var idform = document.getElementById('idform').value; //for me
                // START SPARKMD5
                var blobSlice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlice,
                    chunkSize = 2097152,                             // Read in chunks of 2MB
                    chunks = Math.ceil(file.size / chunkSize),
                    currentChunk = 0,
                    spark = new SparkMD5.ArrayBuffer(),
                    fileReader = new FileReader();

                fileReader.onload = function (e) {
                    console.log('read chunk nr', currentChunk + 1, 'of', chunks);
                    spark.append(e.target.result);                   // Append array buffer
                    currentChunk++;

                    if (currentChunk < chunks) {
                        loadNext();
                    } else {
                        console.log('finished loading');
                       // START DROPZONE PART
                        $.ajax({
                            type: 'POST',
                            url: 'del.php',
                            data:"filename="+name+"&idform="+idform+"&hash="+spark.end(), //spark.end is the MD5
                            dataType: 'html'
                        });
                        var _ref;
                        return (_ref = file.previewElement) != null ? _ref.parentNode.removeChild(file.previewElement) : void 0; 
                        // END DROPZONE PART
                    }
                };

                fileReader.onerror = function () {
                    console.warn('oops, something went wrong.');
                };

                function loadNext() {
                    var start = currentChunk * chunkSize,
                        end = ((start + chunkSize) >= file.size) ? file.size : start + chunkSize;

                    fileReader.readAsArrayBuffer(blobSlice.call(file, start, end));
                }

                loadNext();
                // END SPARKMD5
          }
});