vue3 naive ui+java下载文件

java后端代码

import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

@RestController
@RequestMapping("/api/files")
public class FileDownloadController {

    // 文件存储路径(根据实际情况修改)
    private static final String FILE_DIRECTORY = "/path/to/your/files/";

    @GetMapping("/download/{fileName}")
    public void downloadFile(@PathVariable String fileName, HttpServletResponse response) {
        File file = new File(FILE_DIRECTORY + fileName);

        if (file.exists()) {
            try (InputStream inputStream = new FileInputStream(file)) {
                // 设置响应头
                response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
                response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + file.getName() + "\"");
                response.setContentLength((int) file.length());

                // 将文件流写入响应输出流
                byte[] buffer = new byte[1024];
                int bytesRead;
                while ((bytesRead = inputStream.read(buffer)) != -1) {
                    response.getOutputStream().write(buffer, 0, bytesRead);
                }
                response.getOutputStream().flush();
            } catch (IOException e) {
                throw new RuntimeException("文件下载失败", e);
            }
        } else {
            throw new RuntimeException("文件不存在");
        }
    }
}

vue前端使用axios




                    
                    

你可能感兴趣的:(java,vue)