如何在DropzoneJS的上传文件列表中获取索引

时间:2016-01-10 14:11:15

标签: javascript arrays upload dropzone.js

我正在练习dropzoneJS,我想知道如何获取列表中某个文件的索引,因为我想删除与我上传的文件相关的数组元素。

我创建了一个名为uploadedImages的数组。

var uploadedImages = []; //I somehow made it to store the image array from database

我想在uploadImages函数

上存储addedfile个文件名
myDropzone.on("addedfile", function(file) {
    uploadedImages.push(file.name);

});

然后从uploadedImages中删除已删除的文件中的图像,但是我使用了Dropzone的file.name,但是如果我有大量具有相同名称的图像或者我以某种方式上传了相同的文件倍。我认为更好的方法是找到索引。

myDropzone.on("removedfile", function(file) {
 var filterUpload = uploadedImages.filter(function(img_file){
     return img_file != file.name;
  });
  uploadedImages = filterUpload;
});

请提出任何建议。

先谢谢你们。

3 个答案:

答案 0 :(得分:0)

这部分回答了你的问题。它将从Dropzone当前拥有的文件数组中获取索引。

myDropzone.on("removedfile", function(file) {    
    // get index of dropzone file
    var index = myDropzone.files.map(function (obj, index) {
        if (file == obj) {
            return index;
        }
    }).filter(isFinite)[0];
});

答案 1 :(得分:0)

服务器端

成功验证后&在服务器端上传,将图像信息存储在数据库中。然后获取imageID(DB表中最后插入的ID)并将其存储在$ _SESSION数组中:

$_SESSION["uploadedImages"][$imageID] = fileName;

在PHP代码的末尾输出带有文件ID的json响应:

$out = array("fileID"=>$imageID);
echo json_encode($out);

客户端

在Dropzone回调中使用该文件ID,并将其存储在File对象中,如下所示:

dropZone.on("success", function(file, response){
    obj = JSON.parse(response);
    //Save file id returned from server:
    file.id = obj.fileID;
});

现在删除文件时,将存储的fileID发送到服务器:

dropZone.on("removedfile", function(file){
     //Delete uploaded file from server:
     var imageID = file.id;
     $.post("upload.php","deleteImage="+imageID, function(data){    
          alert("removed")
     });
});

然后只需在upload.php中使用ID从数据库和$ _SESSION数组中删除图像。

答案 2 :(得分:0)

您应该创建一个存储文件的变量,并在removefile回调中获取索引,如下所示:

success: function(file, response) {
            dz_uploaded_url.push(file);
        },
        removedfile: function(file) {
            var index = dz_uploaded_url.map(function(d, index) {
                if(d == file) return index;
            }).filter(isFinite)[0];

            var _ref;
            return (_ref = file.previewElement) != null ? _ref.parentNode.removeChild(file.previewElement) : void 0; 
        }