2011-10-21 2 views
2

주어진 브라우저가 파일 업로드 요소에 multiple 속성을 지원하는지 테스트 할 수 있습니까? 서버 측 또는 클라이언트 측 구현으로 충분합니다.브라우저에서 여러 파일 업로드를 지원하는지 테스트 하시겠습니까?

필자는이 기능을 지원하는 알려진 브라우저 목록과 비교하여 사용자 에이전트를 테스트 할 수 있음을 알았지 만 이는 다소 연약한 구현처럼 보입니다 (IE 10이 마침내 출시 될 때 기능을 지원한다면, 내 코드를 다시 편집해야합니다.) 이 기능에 대한 지원을 직접 테스트하고 싶습니다.

생각하십니까?

+0

당신이 사용하는 방법에 대한 생각 [uploadify] (http://www.uploadify.com/) 대신? – stivlo

+0

@stivlo 나는 가지고 있고, 나는이 [jQuery plugin] (http://aquantum-demo.appspot.com/file-upload)을 대신 사용하고있다. 나는 그것이 훨씬 더 낫다는 것을 알고 있는데 왜 당신은 Uploadify를 추천하고 있습니까? –

+0

내가 알기 때문에 jQuery 파일을 아직 보지 못했습니다. 보시니 고마워요. – stivlo

답변

3

이 기능은 HTML5 사양의 일부이며 현재 구현에만 사용되고 있기 때문에 아직 확실하고 신뢰할 수있는 방법이 없습니다. 확실하게 알고 싶습니까? 그런 다음 가능한 많은 브라우저에서 테스트하십시오. 그렇게 말하지만, 코드 세그먼트에서 발견 : 당신이 "복수"의 존재에 대한 간단한 테스트를 기반으로이 결정 할 수 있어야한다고 보여 않습니다

https://developer.mozilla.org/en/DOM/Input.multiple

일반적으로 사용되는 같은 속성 많은 다른 요소들.

1

는, 현 시점에서이 작업을 수행 할 신뢰할 수있는 방법이 없습니다 (input type=file에 대한 즉 지원 - 여러 파일 업로드 혼자하자). 그의 연구 결과에 따르면 많은 브라우저/장치 은 지원을 잘못보고합니다.

은 내가"현 시점에서이 작업을 수행하는 더 신뢰할 수있는 방법"을 의미하는 것은 우리가이 특정 기능에 대한 HTMLInputElement.multiple 속성을 오탐 (false positive)의 목록을하지 않아도됩니다. 분명히 목록에는 전체 regexp of false positives for input type=file이 포함되지만 가능성이 높습니다.에는이 특정 기능에 대한 추가 오감 (false positives)이 포함되어 있으므로이 기능을 감지하는 기능은 브라우저의 체계적인 테스트를 기다리고 있습니다.

일시적으로 Salminen의 코드를 기반으로 한 줄 (el.multiple = true;)을 추가하고 위의 정규 표현식을 xxx으로 대체하여 다음 테스트를 사용할 수 있습니다.

var isMultipleFileInputSupported = (function() { 
    // Handle devices which falsely report support 
    if (navigator.userAgent.match(/xxx/)) { 
     return false; 
    } 
    var el = document.createElement('input'); 
    el.type = 'file'; 
    el.multiple = true; 
    return !el.disabled; 
})(); 

사용 예 :

if (isMultipleFileInputSupported) { 
    console.log('multiple file input is supported'); 
} else { 
    console.log('multiple file input is NOT supported'); 
} 
관련 문제