내 .NET AJAX 요청을 처리 할 수 있도록 .NET Core 서버에 BLOB로 PDF를 보내야합니다. 그것을 다시 PDF로 변환하여 다운로드 할 수 있습니다.C#을 BLOB로 열고 JS를 BLOB로 다운로드
간접 지정의 이유는 파일이 AJAX를 통해서만 액세스되는 API에 있기 때문입니다. 베어러 토큰이 필요하기 때문에 내가 만든 사이트에 대한 쿠키가 없으므로 배후의 양식 만 사용할 수는 없습니다. (기이한데, 나도 알아,하지만 그게 현재 어떻게 그 부분을 변경하고 싶지 않아)
내 C# 측에서 아래에 나와있는 몇 가지 변형을 시도했다. ApiResponse
은 bool
과 string
(이름이 message
)을 사용하는 컨테이너 일 뿐이므로 요청이 좋은지 아닌지 알 수 있습니다.
이들은
내가 밖으로 다시 구문 분석하는 동일한 순서로,return new ApiResponse(true, File.ReadAllText(path));
return new ApiResponse(true, Convert.ToBase64String(File.ReadAllBytes(path)));
return new ApiResponse(true, JsonConvert.SerializeObject(File.ReadAllBytes(path)));
그리고 JS 측의 노력했습니다 무엇인가, 내가 가진 :
// Get the response in object form, since it's sent as an ApiResponse
const response = JSON.parse(xmlhttp.response);
const text = response.message;
const text = atob(response.message)
const text = JSON.parse(response.message)
나는 또한 시도했다 그런 다음
const text = atob(JSON.parse(response.message))
같은 일들이 텍스트와 나는이 일을 해요 :
const blob = new Blob([text], {type: "application/pdf"});
const url = URL.createObjectURL(blob);
const a = document.createElement("a");
a.href = url;
a.download = "file.pdf";
document.body.appendChild(a);
a.click();
그리고 다운로드 한 파일이 올바르게 생성됩니다. 그러나 해당 파일이 유효하지 않습니다. 손상되었습니다.
저는이 시점에서 꽤 꼼짝 못했습니다. 자바 스크립트로 파일을 다운로드 할 때이 방법을 사용하여 처음부터 끝까지 뭔가를 찾을 수 없었습니다. 그것은 뒷면이나 앞면 중 하나지만 결코 묶여 있지 않습니다.
그렇다면 PDF BLOB를 성공적으로 전송하고 프런트 엔드에서 다시 생성하여 다운로드 할 수 있습니까?