내가 가진 이진 (ZIP) 파일 데이터를 인코딩 및 C#에서 디코딩 전송 압축 파일 I 인코딩 문자열 및 디코드로 전송하고 서버 측에 저장하려면 :자바 스크립트 -
이 코드를 클라이언트 (JS)에서의 부호화 :
var fileAsText = ''
var reader = new FileReader()
reader.onload = function (event) {
fileAsText = encodeURIComponent(event.target.result)
}
reader.readAsText(zipFile)
zipFile
는 (사용자가 업로드) 입력 파일 오브젝트이다.
내가
모든 것이 잘 작동 (이것은 내가 encodeURIComponent
을 사용하고 있습니다 이유입니다)하지만, 서버 측에서 내가이 문자열을 다시 디코딩을을 할 JSON
내부 Post
로 전송하고있어 fileAsText
문자열 바이너리 (zip 파일)로 압축을 풉니 다. 그리고 나는 정확히 동일한 파일을 클라이언트 측에서 업로드하도록하고 싶습니다.
이것은 C#을 내 코드입니다 :
using (var bw = new BinaryWriter(File.Open("fileTest.zip", FileMode.Create)))
{
bw.Write(HttpUtility.UrlDecode(fileAsText));
}
문제 : 내가 같은 파일을 얻을하지 않습니다 나는 디코더 HttpUtility.UrlDecode
가 맞지 믿는다 (이진 데이터는 diffrent입니다) encodeURIComponent
사용자가 업로드 한 동일한 파일 바이너리 데이터를 얻는 방법에 대한 아이디어가 있으십니까?
Convert.FromBase64String
를 사용하여 이진하기 위해 당신은 아마 JSON 및 파일을 모두 결합 formData를 사용 후 그대로 ... 블롭을 보내고 ... 텍스트로 읽을 수 있습니다. 당신이 filereader를 사용하여 텍스트로 읽은 순간부터 깨진 데이터를 얻었습니다. Javascript는 바이너리 문자열을 잘 처리 할 수 없다. – Endless@ 끝이 없다. 텍스트로 읽는 이유가있다. 설명하기가 복잡하다. (제한 사항) reader.readAsText를 사용해야하는 경우 해결책을 찾아 보자. – cheziHoyzer
왜 json으로 게시해야합니까? 나쁜 생각이야. 더 많은 필드 ([FormData] (https://developer.mozilla.org/en-US/docs/Web/API/FormData))가 필요하면'xhr.send (zipFile)'처럼 보내거나 multipart 업로드를 사용할 수 있습니다.) – Endless