2017-01-10 1 views
0

여기에서 base64 변환으로 여러 파일 이미지를 만들었습니다. 제 요구 사항 사용자가 여러 이미지를 선택하고 제출 버튼을 클릭하면 값 (파일)을 가져와야한다는 것을 의미합니다. base64로 인코딩 여기에 문자열을 선택 이미지가 잘 작동하지만 언론은 "전화 버튼을 제출하면 내가이 오류Base64로 인코딩 된 이미지가 제출 버튼에서 작동하지 않습니다

$(document).ready(function(){ 
 
    $("input[name=property_images]").change(function() { 
 
     var imgBase64Arr = []; 
 
     var files = this.files; 
 
     for (var i = 0; i < files.length; i++) { 
 
     (function(i){ 
 
      var FR = new FileReader(); 
 
      FR.onload = function(e) { 
 
\t \t \t 
 
\t \t \t var res = e.target.result ; 
 
\t \t \t var arr1 = res.split(","); 
 
\t \t \t var property_image = arr1[1] ; 
 
      imgBase64Arr.push(property_image);//adding base64 value to array 
 

 
      if(i === files.length -1)//after all files are porcessed 
 
       myFunction(imgBase64Arr) 
 
      }; 
 
      FR.readAsDataURL(files[i]); 
 
     })(i); 
 
     } 
 

 
    }); 
 
    
 
}); 
 

 
function myFunction(imgBase64Arr){ 
 
    console.log(imgBase64Arr); 
 
    }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
 

 
<input type="file" name="property_images" multiple="multiple" /> 
 
<input type="button" value="submit" onclick="myFunction()">

+0

당신은 아무것도 전달하지 않고 myFunction을 호출합니다! imgBase64Arr은 정의되지 않았으므로 undefined입니다. 두 번째로 수정하면 imgBase64Arr이 change 메서드에 정의되어 있으므로 외부에서 평가할 수 없습니다. – epascarello

+0

함수에 인수를 제공하지 않습니다 :'myFunction()'. 'console.log (imgBase64Arr);을 수행 할 때''imgBase64Arr'은 정의되지 않았습니다. –

+0

onchange myFunction (imgBase64Arr);처럼 이미지를 전달하는 동안; –

답변

0

를 해결하는 방법을 정의되지 않은 무엇입니까 버튼을 제출가는 것이다 시간으로 변환 myFunction "아무것도 건드리지 않고 ..

$(document).ready(function(){ 
 
    var imgBase64Arr = []; 
 
    $("input[name=uploadBtn]").click(function(){ 
 
     console.log(imgBase64Arr); 
 
    }); 
 
    $("input[name=property_images]").change(function() { 
 
     imgBase64Arr = []; 
 
     var files = this.files; 
 
     for (var i = 0; i < files.length; i++) { 
 
     (function(i){ 
 
      var FR = new FileReader(); 
 
      FR.onload = function(e) { 
 
\t \t \t 
 
\t \t \t var res = e.target.result ; 
 
\t \t \t var arr1 = res.split(","); 
 
\t \t \t var property_image = arr1[1] ; 
 
      imgBase64Arr.push(property_image);//adding base64 value to array 
 

 
      if(i === files.length -1)//after all files are porcessed 
 
       myFunction(imgBase64Arr) 
 
      }; 
 
      FR.readAsDataURL(files[i]); 
 
     })(i); 
 
     } 
 

 
    }); 
 

 

 
    
 
}); 
 

 
function myFunction(imgBase64Arr){ 
 
    console.log(imgBase64Arr); 
 
    }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
 

 
<input type="file" name="property_images" multiple="multiple" /> 
 
<input type="button" name="uploadBtn" value="submit">

0

는 귀하의 imgBase64Arr 변수는 전역으로 정의되어 있지 않습니다. 그것을 전 세계적으로 정의하십시오.

관련 문제