2015-02-03 5 views
0

파일 업로드를 위해 blueimp jQuery-File-Upload를 사용 중입니다 (https://github.com/blueimp/jQuery-File-Upload/). 사용자가 Google 크롬 (또는 다른 브루 카메라)의 드롭 영역으로 폴더를 드래그하지 못하게하고 싶습니다. 여러 옵션과 여러 디렉토리 webkitdirectory mozdirectory를 시도했습니다. 사용자가 크롬을 포함한 모든 브라우저에서 폴더를 드롭하지 않도록하고 싶습니다.jQuery에서 폴더 업로드 방지 파일 업로드

폴더를 방지 할 수있는 옵션이 있습니까? 또는 드롭 영역이 나타나기 전에 폴더를 압축 할 수 있습니까? 또는 사용자가 폴더를 zip/rar로 변환하고 드래그해야한다는 경고 메시지를 표시 할 수 있습니까?

+0

당신의 웹 응용 프로그램은 Google 크롬 55가 폴더 내부의 일부 파일 형식 (zip, doc, xls)에 대해 'file.type' (일명 ContentType) 설정을 수정하지 않는다는 것입니다. 'file.type'을 하늘의 캐릭터 라인으로 설정합니다. – dhollenbeck

답변

2

그래서 같은 문제가있었습니다. Chrome에서이를 감지하는 방법은 data.originalFiles.length > 1을 찾고 Firefox에서는 data.files[0].size === 0을 찾으십시오.

는 나는 singleFileUploads: falselimitMultiFileUploads: 1minFileSize: 1에 대한 maxNumberOfFiles: 1을 옵션을 설정 (너무 getNumberOfFiles를 설정!)와 함께 장난 시도

...하지만 그들 중 누구도 아주 잘 작동하는 것 같았다, 그리고 문서의 종류 퍼지하고 있었다 코드가 복잡하다.

유효성 검사 옵션 (https://github.com/blueimp/jQuery-File-Upload/wiki/Options#processqueue)이 있지만이 예제에서는 jQuery에서 더 이상 사용되지 않는 $.Deferred 메서드를 사용합니다. 이보다 더 가지고있는 경우, 기본적으로

var jqXHR = null; 

$('#fileupload').fileupload({ 
    multipart: false, 
    add: function(e, data) { 
    if (data.originalFiles.length > 1 || data.files[0].size === 0) { 
     fileError(null, 'zip'); 
    } else { 
     jqXHR = data.submit(); 
    } 
    }, 
    error: function(jqXHR, textStatus) { 
    self.fileError(jqXHR, textStatus); 
    } 
}); 

var fileError = function(jqXHR, textStatus) { 
    var statusCode = jqXHR ? jqXHR.status : 0; 
    // Figure out something nice to say, then close modal and clear out input box. 
    var friendlyError = 'Your file failed to upload.'; 

    if (textStatus === 'abort') { 
    friendlyError = 'Your file upload was aborted.'; 
    } else if (textStatus === 'error') { 
    friendlyError = 'There was a server error that prevented your file from being uploaded.'; 
    } else if (textStatus === 'zip') { 
    friendlyError = 'This file cannot be uploaded. Please zip the file and try again.'; 
    } 

    // Your custom UI code here! 
}; 

:

그래서,이 같은 (나는 지점/조금 더 간단하게 내 사용자 정의 물건과 엑스트라를 모두 제거)을하고 결국 하나의 파일 또는 파일 크기가 0 인 경우 jqXHR 데이터를 제출하는 대신 오류 코드를 트리거하십시오. 그런 다음 fileupload의 오류 처리를 으로 대체하십시오. DRY 때문에이 오류 처리기를 사용하십시오.

+0

나는이 melissanoelle을 시도 할 것이다 ... – Vinod

+0

그것은 어떻게 운동 했습니까? – melissanoelle

+0

코드 'data.originalFiles.length는 "나를 위해 일하지 않은 을 내가 선을 사용하는 경우 myJsonVin = JSON.stringify (데이터). var에 json_obj_vin = JSON.parse (myJsonVin) lenVin = json_obj_vin [" 파일]] 길이] 위와 같이 크롬에서 작동하지만 Firefox에서는 작동하지 않습니다. (Windows에서는) – Vinod

0

I 옵션을 찾을 수없는하지만 jquery.fileupload.js

} else if (entry.isDirectory) { 
 
     // directory drag prevent 
 
     //dirReader = entry.createReader(); 
 
     //readEntries(); 
 
} else {
코드를 변경

하나의 이유는 ** **에서 폴더를 삭제 지원하지 않는 것을 주목해야한다