2012-01-22 3 views
3

여기에있는 데모 (JavaScript file api)를 기반으로 실제 업로드가 발생하기 전에 미리보기 이미지를 생성하기 위해 자바 스크립트 "파일"API를 사용하여 업로드 할 이미지에 대한 정보를 읽습니다. 는 "복수"속성을 갖는 파일의 입력을 사용JavaScript의 File-API 객체에서 속성을 제거하는 방법은 무엇입니까?

하나 개 이상의 파일과 같이, 동시에 선택 될 수있다 : 이미지 (들)이 사용자에 의해 선택 되었다면 <input type="file" id="imageFiles" name="userfile[]" multiple />

, I는 검사 방화 광구가있는 요소와 나는 DOM에서 "파일"객체가 선택된 각 이미지에 대한 정보를 포함하고 있음을 알 수 있습니다.

"파일"개체에는 파일이 선택된 것과 동일한 속성이 포함되며 각 속성에는 각 이미지에 대한 정보가 포함됩니다. 필자는 각 속성이 하나의 객체라는 의미에서 연관 배열로 "파일"객체를 설명 할 수있었습니다.

내가 원하는 것은 "파일"개체에서 특정 속성을 제거하여 이미지를 다시 선택하지 않고도 업로드 될 이미지 중 하나를 제거 할 수있게하려는 것입니다.

는 지금까지 내가 시도하고 그것이 작동하지 않는 것입니다 :

var getAllFiles = document.getElementById('imageFiles'); 
var allImages = getAllFiles.files; // returns an object with X properties 
delete allImages[X]; // "X" is whatever property key I'm passing in 

나는 방법 "() 스플 라이스"를 해봤지만 중 하나가 작동하지 않습니다.

대단히 감사합니다.

+0

중복 된 http://stackoverflow.com/questions/208105/how-to-remove-a-property-from-a-javascript-object ?? 또는 http://stackoverflow.com/questions/346021/how-do-i-remove-objects-from-a-javascript-associative-array –

+3

제목이 질문을 잘못 표시합니다. 'files'는 사전이 아니며 DOM 객체의 멤버입니다. Javascript가 DOM 객체에 대해 수행 할 수있는 작업과 수행 할 수없는 작업에 대한 보안 고려 사항이 많이 있지만 유형 파일의 INPUT보다 엄격하게 제어되는 것은 없습니다. "멀티 파일 업로드 입력에서 파일을 선택 취소하는 방법"으로 질문의 제목을 다시 지정하십시오. – Malvolio

+0

j-man86과 Malvolio에 감사드립니다. – jnkrois

답변

4

.files은 읽기 전용이므로 수정할 수 없습니다.

var files = [].slice.call(this.files); 
files.splice(1, 1); //whatever works for normal array 

: 당신은 배열에 파일 자체를 추출 할 수 있습니다하지만 당신이 정상적인 형태로 업로드를 사용할 수 없습니다, 당신은 당신이 사용 정상적인 배열에 파일을 추출 할 수 있습니다 binary XHR

을 통해 업로드 할 것 당신은 또한 단지 처음에 입력에 accept="image/*"을 넣을 수 :

<input type="file" id="imageFiles" accept="image/*" name="userfile[]" multiple /> 

난 당신이 파일의 API없이 IE 또는 다른 브라우저에서 작동하지 않습니다 이해 가져 가라.

+0

대단히 감사합니다. 일부 독서와 브라우징을 한 후에는 읽기 전용 상황임을 깨달았습니다. 보안 문제는 이해하지만 엄지 손톱 만 클릭하면 파일을 삭제할 수 있다는 것이 좋았을 것입니다. 또한 나는 그것이 아직 완전히지지되지 않았다는 것을 안다. 나는 이미 그 자리를 대신하고있다. 정말 고마워요. – jnkrois

관련 문제