programing

"'블럽'을 구성하지 못했습니다.파일을 다운로드할 때 제공된 값을 시퀀스 "로 변환할 수 없습니다.

randomtip 2023. 8. 29. 21:58
반응형

"'블럽'을 구성하지 못했습니다.파일을 다운로드할 때 제공된 값을 시퀀스 "로 변환할 수 없습니다.

ajax/jquery(알고 있습니다...)를 사용하여 PDF 파일을 다운로드하여 저장하려고 합니다.

다음은 서버 측면에 있는 내용입니다.

        public HttpResponseMessage GetPdf()
        {
            var pdf = generatePdfByteArray(); // byte[]

            var result = Request.CreateResponse(HttpStatusCode.OK);
            result.Content = new ByteArrayContent(pdf);
            //result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
            //{
            //    FileName = "blah.pdf"
            //};
// tried with and without content disposition.. shouldn't matter, i think?
            result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/pdf");

            return result;
        }

여기는 클라이언트 측입니다.

    let ajaxOptions = {
    url: '/url',
    type: "GET",
    accepts: "application/pdf",
    success: (data) => {
        let blob = new Blob(data, {
            type: "application/pdf"
        }); // <-- this fails

        // stuff...
    }
};
$.ajax(ajaxOptions);

이게 뭐가 문제인지 짐작 가는 거라도?

첫 번째 매개 변수는 시퀀스여야 합니다.

따라서 이 방법은 작동하지 않습니다.

let blob = new Blob(data, {
    type: "application/pdf"
});

하지만 이것은 다음과 같습니다.

let blob = new Blob([data], {
    type: "application/pdf"
});

이것이 바로 제가 하게 된 것입니다.

public HttpResponseMessage GetPdf()
{
    var pdf = generatePdfByteArray();

    var result = Request.CreateResponse(HttpStatusCode.OK);
    var dataStream = new MemoryStream(pdf);
    result.Content = new StreamContent(dataStream);
    result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
    {
        FileName = "file.pdf"
    };
    result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/pdf");

    return result;
}

언급URL : https://stackoverflow.com/questions/55130927/failed-to-construct-blob-the-provided-value-cannot-be-converted-to-a-sequenc

반응형