이미지를 서버로 보내도록 양식 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);
감사합니다. 이 게시물에 나를 가리키는 친구에게
소리는 UTF-8 인코딩과 유사합니다. 64 번으로 보내 주시겠습니까? – pimvdb
UTF-8을 사용하여 게시물 요청이 전송되는 동안 UTF-16을 사용하는 자바 스크립트를 의미합니까? 내가 base64 시도하고 작동하지 않았다. 그리고 서버에 대한 액세스 권한도 없습니다. – vuamitom
base64가 작동하지 않는다는 것은 무엇을 의미합니까? Base64 값을 얻기 위해'FileReader.readAsDataURL' 만 사용하면 절대로 작동하지 않습니다. –