2011-09-13 6 views
6

아래 내용이 있습니다. dostuff에서 내 파일 업로드에서 하나 이상의 파일 (전부는 아니지만)을 제거하고 싶습니다.html5에서 업로드하는 파일을 프로그래밍 방식으로 하나 이상 제거 하시겠습니까?

유일한 이미지는 png, jpggif입니다. Bmp, svg 등은 거부 된 양식을 가져옵니다.

나는 자바 스크립트를 검사하지만 받아 들일 수없는 파일 (bmp 등)을 제거하고 계속할 수 있는지 묻는 메시지를 표시하고 싶습니다. 프로그래밍 방식으로 파일을 업로드에서 제거하려면 어떻게해야합니까?

답변

0

파일을 배열로 액세스 한 다음 필요에 따라 배열을 조작하여 허용되지 않는 파일을 제거 할 수 있습니다.

<script type="text/javascript"> 
    function dostuff(input) { 
     var output = 'All Files:<br />'; 
     var validOutput = '<br />Valid Files:<br />'; 
     var validFiles = []; 
     for(var i = 0; i < input.files.length; i++) { 
      if(input.files[i].name.substr(-3, 3) != 'jpg') { 
       alert(input.files[i].name + ' is invalid'); 
      } 
      else { 
       validFiles.push(input.files[i]); 
       validOutput += input.files[i].name; 
      } 
      output += input.files[i].name + '<br />'; 
     } 
     output += validOutput; 
     document.getElementById('output').innerHTML = output; 
    } 
</script> 

<input type='file' name='uploads[]' multiple="" onchange="dostuff(this);" accept="image/*" /> 
<div id="output"></div> 

Fiddle here.

+1

이 코드에서 파일을 삭제하지 않으셔도됩니다. 난 그냥 input.files 수정 시도하고 아무것도 보이지 않습니다. 서버는 여전히 내 코드가 오류없이 실행되는 무효 파일을 가져옵니다. –

+0

예, 저는 input.files를 수정하려고 애썼지 만 연관 배열이고 값을 덮어 쓸 수 없습니다. AJAX 메서드를 사용하고 컨트롤에 의해 생성 된 기본 파일 배열 대신 만든 유효한 파일 배열을 보내야 할 수도 있습니다. – ggutenberg

+1

정확히 그럴 수 없습니다. 나는 자동적으로 그렇게하지 않을 것이고 제출을 거절 할 것이다. 그것은 아마도 혼란을 덜 일으킬 것입니다. –

1

저는 최근에이 문제에 대해서도 언급했습니다. 제 문제를 해결하기 위해 jQuery를 사용하고 있습니다. 그렇게하고 싶다면 바닐라 js로 변환 할 수 있습니다. 코드 스 니펫은 다음과 같습니다.

function clearFileInput(){ 
    var fileInput = $('#your-file-input-selector'); 
    var fileInputContainer = fileInput.parent(); 
    var fileInputClone = fileInput.clone(); 

    fileInput.remove(); 
    fileInputContainer.append(fileInputClone); 
} 

희망이 있습니다.

관련 문제