2014-11-25 5 views
34

Safari에서 아래에 오류가 표시됩니다.'URL'에서 'createObjectURL'을 (를) 실행하지 못했습니다.

Failed to execute 'createObjectURL' on 'URL': No function was found that matched the signature provided. 

내 코드는 다음과 같습니다

function createObjectURL(object) { 
    return (window.URL) ? window.URL.createObjectURL(object) : window.webkitURL.createObjectURL(object); 
} 

이 이미지에 대한 내 코드입니다 :

window.URL.createObjectURL(data) 
: 나는 createObjectURL에 원시 데이터를 통과 할 때 나는 같은 오류가 발생
function myUploadOnChangeFunction() { 
    if (this.files.length) { 
     for (var i in this.files) { 
      if (this.files.hasOwnProperty(i)) { 
       var src = createObjectURL(this.files[i]); 
       var image = new Image(); 
       image.src = src; 
       imagSRC = src; 
       $('#img').attr('src', src); 
       } }   
      } } 
+5

안녕하세요 Hardik, 그 오류가 발생하면'createObjectURL (...)'함수에 무엇을 전달 하시겠습니까? –

+2

객체는 File 객체이거나 Blob 객체 여야 객체 URL을 만들 수 있습니다. http://devdocs.io/dom/window.url.createobjecturl – yxf

+1

이것은 내 이미지 코드입니다. function myUploadOnChangeFunction() { if this.files.length) { for (var i in this.files) { if (this.files.hasOwnProperty (i)) { var src = createObjectURL (this.files [i]); var image = 새 이미지(); image.src = src; imagSRC = src; $ ('# img'). attr ('src', src); } } } } –

답변

0

문제는 루프에서 제공되는 키 파일의 인덱스를 참조하지 않는다는 것입니다.

for (var i in this.files) { 
    console.log(i); 
} 

위의 코드의 출력은 다음과 같습니다

0 
length 
item 

그러나 예상이었다 :

브라우저가 예를 들어, 실행하려고 할 때
0 
1 
2 
etc... 

그런 다음 오류가 발생합니다

window.URL.createObjectURL(this.files["length"]) 

나는 ggest 구현은 다음 코드를 기반으로합니다.

var files = this.files; 
for (var i = 0; i < files.length; i++) { 
    var file = files[i], 
     src = (window.URL || window.webkitURL).createObjectURL(file); 
    ... 
} 

이 정보가 도움이되기를 바랍니다.

인사말!