2013-08-15 5 views
3

업로드 대기열을 지우고 업로드 된 파일을 삭제하려면 Uploadify를 시도하고 있습니다. 문제는 이것입니다. 5 개의 파일 (uploadLimit 5 세트 포함)을 업로드하면 처음 업로드됩니다. 내가 이것을 사용하여 큐를 삭제한다면 :Uploadify : 업로드 된 항목을 대기열에서 제거하는 방법

<a class="button" href="javascript:jQuery('#attachment').uploadify('cancel', '*');">Clear Upload Queue</a>

은 화면에서 시각적으로 파일을 제거하지만, 난 여전히 더 이상 파일을 업로드 할 수 없습니다. 나는 다음을 사용하여 시도했다 :

jQuery('#attachment').uploadify('settings', 'uploadLimit', 5)onQueueClear 그러나 uploadLimit을 재설정하지 않는다. 대기열이 지워진 후 uploadLimit을 어떻게 재설정합니까? out-of-the-box 솔루션 저도 요 cancel 방법은 아직 업로드 된 파일에 영향을

jQuery('#attachment').uploadify({ 
    swf: '/javascript/uploadify/uploadify.swf', 
    uploader: '/javascript/uploadify/uploadify.php', 
    uploadFolder: 'temp', 
    uploadTime: UPLOAD_TIME, 
    uploadToken: UPLOAD_TOKEN, 
    cancelImage: '/javascript/uploadify/cancel.png', 
    fileTypeExts: '*.jpg; *.gif; *.png; *.jpeg; *.doc; *.docx; *.zip; *.pdf; *.xls; *.xlsx; *.JPG', 
    fileTypeDesc: 'Allowed Files', 
    auto: true, 
    multi: true, 
    removeCompleted: false, 
    simUploadLimit: 1, 
    fileSizeLimit: '3MB', 
    allowedFiles: '*.jpg; *.gif; *.png; *.jpeg; *.doc; *.docx; *.zip; *.pdf; *.xls; *.xlsx; *.JPG', 
    // allowedFiles: '*.cdt;*.con;*.doc;*.docx;*.dxd;*.gif;*.jpg;*.jpeg;*.key;*.lab;*.mov;*.mp4;*.m4v;*.pdf;*.png;*.pps;*.ppt;*.pptx;*.rst;*.txt;*.wmv;*.xls;*.xlsx;*.zip', 
    uploadLimit: 5, 
    width: 210, 
    height: 40, 
    buttonText: 'Click to Add Up to 5 Attachments', 
    buttonImage: '/images/content/mail/add-attachments.png', 
    onUploadStart: function (file) { 
     jQuery('.submit').attr('disabled', 'disabled'); 

     if (parseInt($.cookie('size')) > 0) { 
      $.cookie('size', parseInt($.cookie('size')) + file.size); 
     } else { 
      $.cookie('size', file.size); 
     } 

     if (parseInt($.cookie('size')) > 30000000) { 
      alert('You have exceeded the maximum queue size. Please delete one or more files from your upload. You can clear your queue by clicking the button below.'); 
      jQuery('#attachment').uploadify('cancel', '*'); 
     } 
    }, 
    onUploadSuccess: function (file, data, response) { 
     jQuery('.submit').removeAttr('disabled'); 

     try { 
      obj = jQuery.parseJSON(data); 
      if (obj.success) { 
       jQuery('#' + file.id).append('<input type="hidden" name="temp_image_path[]" value="' + obj.file.name + '" /><input type="hidden" name="original_name[]" value="' + obj.file.original_name + '" />'); 
      } 
     } catch (e) { 
      // do nothing 
     } 


    }, 
    onUploadError: function (file, errorCode, errorMsg, errorString) { 
     alert('The file ' + file.name + ' could not be uploaded: ' + errorString); 
    }, 
    onQueueComplete: function() { 
     jQuery('.submit').removeAttr('disabled'); 
    }, 
    onClearQueue: function (queueItemCount) { 
     //jQuery('.submit').attr('disabled', 'disabled'); 
     var file = (queueItemCount == 1) ? 'file has' : 'files have'; 
     alert(queueItemCount + ' ' + file + ' been removed from your upload queue. You have no files pending upload.'); 
     $.cookie('size', 0); 
     jQuery('#attachment').uploadify('settings', 'uploadLimit', 5); 
    }, 
    formData: { 
     'filetypes': '*.jpg; *.gif; *.png; *.jpeg; *.doc; *.docx; *.zip; *.pdf; *.xls; *.xlsx; *.JPG', 
      'folder': 'temp', 
      'time': UPLOAD_TIME, 
      'token': UPLOAD_TOKEN 
    } 
}); 
+0

파일을 링크 해제하려고 시도해도 여전히 문제가 있습니다. – sehummel

답변

5

내가 찾지 못했습니다 : 여기 내 코드입니다.

업로드 된 파일 (또는 모든 파일)을 삭제하기위한 사용자 지정 처리기를 가질 것을 제안합니다. 어딘가에 unlink 근처에 있습니다. 그리고 당신은 - uploadLimit을 5로 재설정하지 않고 제거 된 파일 수만큼 uploadLimit을 증가시킬 수 있습니다.

업로드 된 파일에 대한 정보가 uploadify 객체에 남아 있습니다. 즉, 사용자가 동일한 파일을로드하려고 시도하면 중복 파일에 대한 경고 메시지가 표시됩니다. 이 컬렉션을 지울 수 있습니다 :

var files = $('#attachment').data('uploadify').queueData.files = []; 
for (var member in files) delete files[member]; 

코드에서 사용하는 것이 정확하지 않을 수 있지만 플러그인을 확장 할 수 있습니다.

+0

고마워, user1965761. 나는 그것을 시도 할 것이다. – sehummel

+3

코드에 오타가 있다고 생각합니다. '.queryData.files'는 실제로'queueData.files'이어야합니다. –

+0

정말 고마워요! 'queueData.files'가 작동합니다. – TheSmile

0

Grin이 말한 것처럼 취소 방법은 아직 업로드되지 않은 파일에만 영향을 미칩니다.

플러그인이 업로드 제한에 도달했는지 확인하는 데 사용하는 값을 편집하는 방법을 찾았습니다. 여기부터 업로드 된 이미지

//on method that removes an image 
$('#attachment').data('uploadify').uploads.count--; 

을 제거 할 때

$('#attachment').data('uploadify').uploads.count 

당신은 해당 필드를 편집 할 수 있습니다, 플러그인 파일의 큐의 크기를 확인하는 작업의 나머지 부분을 할 것입니다. 게다가, 우리는 플러그인 옵션을 편집하는 것을 피하고 있습니다.

관련 문제