2011-10-02 2 views
1

이미지를 서버로 보내도록 양식 POST를 시뮬레이트하는 Chrome 확장 프로그램을 구축 중입니다. 나는 파일을 업로드 할 수 있었지만 그 내용은 왜곡되었습니다. 업로드 된 바이트 배열과 원본 바이트 배열을 비교하면 모든 바이트> 127이 2 개의 다른 바이트로 변환된다는 것을 알 수 있습니다.POST 페이로드의 중복 문자

예컨대 : 137-137

233 -> 195 169 

크롬 개발자 도구의 POST 페이로드> (194)는 요청이 전송되기 전에 중복 바이트가 추가되는 것을 의미한다.

내 원래의 파일 내용 : 웹 페이로드

‰PNG .... 

에 기록

‰PNG .... 

및 콘텐츠 숯불이가 안 콘텐츠를 선행한다. 이 문제를 피하는 방법을 알고 있습니까? 다음은 테스트에 사용하는 코드입니다.

 var fr = new FileReader(); 
     fr.onloadend = function(evt){ 

      if(evt.target.readyState == FileReader.DONE){ 
            //str - image content 
       var str = ""; 
       var byteStr = ""; 
       var dv = new DataView(evt.target.result); 
       console.log("data length = " + evt.target.result.byteLength); 
       for(var i = 0 ; i < evt.target.result.byteLength; i++){ 
        var b1 = dv.getUint8(i); 
        str += String.fromCharCode(b1); 
        byteStr += b1 + " "; 

       } 

       console.log(str); 
       console.log(byteStr); 
           //use jQuery.ajax to post image to server 
       attachImage(str, file.name,file.type); 
      } 
     } 

     fr.readAsArrayBuffer(file); 

감사합니다. 이 게시물에 나를 가리키는 친구에게

+2

소리는 UTF-8 인코딩과 유사합니다. 64 번으로 보내 주시겠습니까? – pimvdb

+0

UTF-8을 사용하여 게시물 요청이 전송되는 동안 UTF-16을 사용하는 자바 스크립트를 의미합니까? 내가 base64 시도하고 작동하지 않았다. 그리고 서버에 대한 액세스 권한도 없습니다. – vuamitom

+0

base64가 작동하지 않는다는 것은 무엇을 의미합니까? Base64 값을 얻기 위해'FileReader.readAsDataURL' 만 사용하면 절대로 작동하지 않습니다. –

답변

관련 문제