내 연락처 정보
우편메소피아@프로톤메일.com
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
1. 먼저 axios의 js 패키지를 가져옵니다.
2. Axios 응답 형식에 주의하세요.result.data.
실제 데이터 콘텐츠
3. 여기서 요청한 URL은 부팅 프로젝트의 getMapping URL이므로 일관성을 유지하세요.
4. 백엔드에 설정하고 싶은 경우파일 이름, 백엔드가 생성된 후 fileName 필드로 응답하고 프런트엔드가 값을 구문 분석합니다.
다음은 페이지에 js가 추가된 것입니다.태그, click 메소드를 호출하여 점프를 트리거하는 코드를 실현합니다.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="js/axios.min.js"></script>
</head>
<body>
<h2>模拟下载</h2>
<button onclick="downloading()">Click me</button>
</body>
<script>
async function downloading() {
const result = await axios.get('http://localhost:8080/download');
console.log(result.data)
if (result.data.code === 200) {
const blob = new Blob([result.data.data], {type: 'text/plain;charset=utf-8'});
const link = document.createElement('a')
link.style.display = 'none'
const url = URL.createObjectURL(blob)
link.href = url
link.download = '文件名.txt'
document.body.appendChild(link)
link.click()
document.body.removeChild(link)
URL.revokeObjectURL(url)
} else {
alert("下载失败!")
}
}
</script>
</html>
1. 인터넷의 많은 데모는 설정을 통해 응답을 반환합니다.요청 본문이 메서드는 데이터 배열을 반환하는 또 다른 아이디어입니다. Excel과 같은 다른 형식인 경우 이진 데이터 byte[]를 반환하여 응답할 수 있습니다.
2. 중국어와 같은 순수 ASCII 코드가 없는 경우 base64 응답을 설정할 수 있습니다. 유니코드 인코딩이 있는 경우 base64 인코딩을 사용하지 마십시오. 그렇지 않으면 프런트 엔드 atob() 메서드에서 문자가 깨질 수 있습니다.
3. 여기서는 Gson을 사용하며, 해당 형식을 통해 맵이 json 문자열로 변환되어 프런트 엔드로 반환됩니다.
@GetMapping("/download")
@ResponseBody
public String downloadFile() {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 500; i++) {
sb.append("模拟一条数据").append(i).append("n");
}
Map<String, Object> resultMap = new HashMap<>(6);
resultMap.put("code", 200);
resultMap.put("data", sb.toString());
return gson.toJson(resultMap);
}
프로젝트 시작 액세스: http://localhost:8080/toIndex
다운로드 버튼을 클릭하세요
텍스트 텍스트 보기
위는 파일 다운로드 기능의 간단한 구현 데모입니다.
여기서는 프론트엔드와 백엔드가 별도로 개발되지는 않았지만 백엔드에 따라 데이터를 완벽하게 전달하고 뷰에 많은 처리를 하지 않는다는 디자인 컨셉은 여전히 참고용과 학습용으로 매우 가치가 있습니다.
많은 세부 사항을 무시하고 핵심 부분만 표시했습니다.
예를 들어, 파일 다운로드에는 하도급 다운로드, 대용량 파일의 분할 다운로드 등이 포함됩니다.
예를 들어 다운로드 형식의 일반화 등.
모두가 문제를 해결하는 데 도움이 되기를 바랍니다. 블로거가 계속 업데이트할 수 있도록 좋아요를 많이 눌러주세요~
권력자들은 가볍게 뿌리는 것, 단순한 데모일 뿐이었고, 서로에게서 배웠다.