2015-05-01 3 views
0

Я использую следующий код, чтобы использовать dropzonejs:Облицовочных вопросы в dropzonejs при удалении файла

$(".dropzone").dropzone({ 
     url: "/ehr/postEHRFile" , 
     addRemoveLinks: "dictRemoveFile" , 
     maxFilesize: 5, 
     maxFiles: 5, 
     dictDefaultMessage: '<i class="fa fa-cloud-upload"></i> \ 
     <span class="main-text"><img src="<?php echo URL."public/images/cloud.png"; ?>" style="width:70px;opacity:0.5;"> <br /> \ 
     <span class="main-text"><b>Drop Files</b> to upload</span> <br /> \ 
     <span class="sub-text">(or click)</span> \ 
     ', 
     dictResponseError: 'Server not Configured', 
     clickable: true, 
     headers: { "userid" : "<?php echo $this->user['id']; ?>" } , 
     success: function (response) { 
      var x = JSON.parse(response.xhr.responseText); 
      if(x.error){ 
       alert(x.message); 
       this.removeAllFiles(); 
      }else{ 
       if($("input[name='ehr_files']").val() == ''){ 
        $("input[name='ehr_files']").val(x.path+':'+x.ftype+':'+x.fname); 
       }else{ 
        $("input[name='ehr_files']").val($("input[name='ehr_files']").val()+','+x.path+':'+x.ftype+':'+x.fname); 
       } 
      } 
     }, 
     removedfile: function(file) { 
      var _ref; 
      return (_ref = file.previewElement) != null ? _ref.parentNode.removeChild(file.previewElement) : void 0; 
     } 
    }); 

И в success Я присваивающую файл деталь в скрытые поля, такие как ImagePath:ImageType:ImageName,ImagePath:ImageType:ImageName....... и так далее ,

Я делаю это, чтобы сохранить все данные файла в скрытых полях (возможно, несколько файлов, поэтому с использованием запятой для разделения) и будет использовать их для сохранения позже в базе данных.

Когда пользователь удаляет файл с панели dropzonejs, мне также необходимо удалить его данные из скрытых полей, чтобы он не сохранялся в базе данных.

Вопросы:

1) Я могу использовать file.name, чтобы получить этот файл, и я могу удалить запись из скрытого поля, но имя файла не может быть уникальным.

2) Я также не могу получить доступ к file объект в функции успеха. Если это будет возможно, я добавлю уникальный идентификатор для идентификации.

3) Я могу удалить, если я могу получить индекс файла, что означает файл второго номера или файл третьего номера, но я не знаю, как получить индекс.

ответ

0

После поиска нескольких часов и попыток различных концепций, наконец, я решил свою проблему. Итак, поделитесь моим обновленным кодом.

Dropzone.autoDiscover = false; 
    var file_detail = ''; 
    var file_detail_arr = ''; 
    $(".dropzone").dropzone({ 
     url: "/ehr/postEHRFile" , 
     addRemoveLinks: "dictRemoveFile" , 
     maxFilesize: 5, 
     maxFiles: 5, 
     dictDefaultMessage: '<i class="fa fa-cloud-upload"></i> \ 
     <span class="main-text"><img src="<?php echo URL."public/images/cloud.png"; ?>" style="width:70px;opacity:0.5;"> <br /> \ 
     <span class="main-text"><b>Drop Files</b> to upload</span> <br /> \ 
     <span class="sub-text">(or click)</span> \ 
     ', 
     dictResponseError: 'Server not Configured', 
     clickable: true, 
     headers: { "userid" : "<?php echo $this->user['id']; ?>" } , 
     success: function (response) { 

      var x = JSON.parse(response.xhr.responseText); 
      if(x.error){ 
       alert(x.message); 
       this.removeAllFiles(); 
      }else{ 
       if($("input[name='ehr_files']").val() == ''){ 
        $("input[name='ehr_files']").val(x.path+':'+x.ftype+':'+x.fname); 
       }else{ 
        $("input[name='ehr_files']").val($("input[name='ehr_files']").val()+','+x.path+':'+x.ftype+':'+x.fname); 
       } 
       this.on("complete", function(file) { 
       file.id = x.path; 

       }); 
      } 
     }, 
     removedfile: function(file) { 
      var _ref; 
      var file_del_path = file.id; 

      var file_str = $("input[name='ehr_files']").val(); 
      var file_arr = file_str.split(','); 

      for(var key in file_arr){ 

       file_detail = file_arr[key]; 
       file_detail_arr = file_detail.split(':'); 

       if(file_detail_arr[0] == file_del_path){ 
        file_arr.splice(key, 1); 
        $("input[name='ehr_files']").val(file_arr.join(',')); 
       } 
      } 

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

     } 
    }); 
Смежные вопросы