ajax excel 다운로드

ajax excel 다운로드

공개 함수 getSpreadsheet() { $items = 항목::all(); Excel:create (`항목`, 함수($excel) use($items) { $excel->시트(`ExportFile`, 함수($sheet) use($items) { $sheet->fromArray($items); }) ->내보내기(`xls`); } 다운로드 한 후 파일을 삭제하려면 이것을 만들면 우리 중 일부는 ajax 요청에서 파일을 제공하려고하는 것을 보았습니다. 몇 가지 연구 후, 나는 그것을 할 수있는 명확한 해결책을 찾지 못했습니다. 그들 중 일부를 조정, 나는 성공적으로 Ajax 요청에서 CSV 및 xls 데이터를 내보냈다. 문제는 인코딩으로 인해 파일 형식이 xls인 경우 조작이 다르므로 약간의 조작이 있습니다. IE, 크롬 및 파이어 폭스에서 브라우저는 파일을 다운로드하라는 메시지를 표시하고 실제 탐색이 발생하지 않습니다. 이렇게 하면 파일이 먼저 브라우저 메모리에 저장된 다음 다운로드를 시작합니까? 문제는 당신이 10 또는 100mb 파일을 다운로드하는 경우, 브라우저는 전체 Blob이 브라우저 메모리에있을 때까지 다운로드 진행률을 표시하지 않습니다 (당신은 네트워크 탭에서 진행 상황을 볼 수 있습니다) 당신은 직접 AJAX 호출을 통해 다운로드 파일을 반환 할 수 없습니다 그래서, 다른 방법은 서버에 관련 데이터를 게시하는 AJAX 호출을 사용하는 것입니다. 그런 다음 서버 측 코드를 사용하여 Excel 파일을 만들 수 있습니다 (이 부분이 작동하는 것처럼 들리지만 EPPlus 또는 NPOI를 사용하는 것이 좋습니다). 정말 고마워요! 나는 그런 해결책을 찾고 있었고, 그것은 놀랍게 작동합니다. 👍 🥇 나는 파일의 모든 유형을 다운로드하는 데 사용할 수 있습니다 (pdf, 이미지 대부분) 반응 : this.apiClient.get (URL, { } ) .then (응답 = { { / PDF 스트림 const Blob = 새 Blob ([response.data]), {유형 : `응용 프로그램 / pdf`}); const url = 창.

URL.createObjectURL(Blob); const 링크 = document.createElement(`a`); 링크.href = URL; const contentDisposition = response.data.content.headers[`콘텐츠-성향`]; let 파일 이름 = `알 수 없음`; (contentDisposition) { const fileNameMatch = contentDisposition.match (/filename=”/)”/); 경우 (fileNameMatch.length === 2) 파일이름 = fileNameMatch[1]; } link.setAttribute(`다운로드`, 파일이름); document.body.appendChild(링크); 링크.클릭(); 링크.remove(); 창. URL.취소개체URL(url); MVC에서 ajax 호출을 사용할 ASP.NET JSON 개체만 반환할 수 있지만 파일은 반환할 수 없습니다. 이렇게 하려면 파일을 만들고 서버에 저장하고 경로를 Ajax로 반환해야 합니다. 결과 : 파일이 다운로드되었지만 크기는 1kb이며 손상된 백 엔드 응답 : { “버전”: {“main”: {1, “major”: “main”: “빌드”: -1, “개정”: -1, “majorRevision”: -1, “사소한 개정”: -1, “사소한 개정”: -1, “사소한 개정”: -1} “콘텐츠”: {{“키”: {“콘텐츠”: {“콘텐츠”, “콘텐츠”, “콘텐츠”, “콘텐츠” 파일 이름 =Ai_2019-01-10_22-08.pdf” ] }, {“키”: “콘텐츠 유형”, “값”: [“응용 프로그램/pdf”] }, {“키”: “콘텐츠 길이”, “값”: [39122″] ] } } } } : “statusCode”: 200, “reasonPhrase”: “확인”, “헤더”: “확인”, “헤더”: “요청 메시지”: null, “isSuccessStatusCode Form_2 Form_1″Form_3

No Comments

Sorry, the comment form is closed at this time.