首页>代码>SpringBoot集成OpenOffice实现Office文档在线预览>/springboot-office/src/main/java/com/simon/springbootoffice/controller/WebController.java
package com.simon.springbootoffice.controller; import com.simon.springbootoffice.util.OpenOfficeUtl; import org.jodconverter.office.OfficeException; import org.springframework.stereotype.Controller; import org.springframework.util.ClassUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.*; import java.nio.channels.Channels; import java.nio.channels.FileChannel; import java.nio.channels.WritableByteChannel; /** * @author Simon */ @Controller public class WebController { /** * 跳转上传界面 * * @return */ @RequestMapping(value = "/", method = RequestMethod.GET) public String show() { return "upload"; } /** * 路径加上 file=xx 查看pdf * * @return */ @RequestMapping(value = "index", method = RequestMethod.GET) public String index() { return "viewer"; } /** * 下载文件 * * @param fileName * @param request * @param response */ @RequestMapping(value = "download/{fileName}", method = RequestMethod.GET) public void index(@PathVariable("fileName") String fileName, HttpServletRequest request, HttpServletResponse response) { try { File file = new File(ClassUtils.getDefaultClassLoader().getResource("static/").getPath() + fileName); FileChannel channel = new FileInputStream(file).getChannel(); ServletOutputStream out = response.getOutputStream(); WritableByteChannel channel_out = Channels.newChannel(out); channel.transferTo(0, file.length(), channel_out); out.flush(); out.close(); } catch (Exception e) { e.printStackTrace(); } } /** * 上传文件 * * @param file * @return * @throws OfficeException */ @RequestMapping(value = "upload", method = RequestMethod.POST) @ResponseBody public String upload(@RequestParam(value = "file", required = false) MultipartFile file) throws OfficeException { File uploadFile = saveFile(file); File output = new File(ClassUtils.getDefaultClassLoader().getResource("static/").getPath() + System.currentTimeMillis() + ".pdf"); OpenOfficeUtl.convert(uploadFile, output); return output.getName(); } /** * 保存文件到本地 * * @param file * @return */ public File saveFile(MultipartFile file) { BufferedOutputStream out = null; try { File file1 = new File(file.getOriginalFilename()); out = new BufferedOutputStream(new FileOutputStream(file1)); out.write(file.getBytes()); out.flush(); return file1; } catch (Exception e) { e.printStackTrace(); return null; } finally { if (out != null) { try { out.close(); } catch (IOException e) { e.printStackTrace(); } } } } }

lironggang LV38
2023年7月21日
小屁孩 LV7
2023年5月24日
ssmtest LV5
2023年3月11日
crosa_Don LV18
2023年3月2日
jk-mack LV5
2023年2月19日
doutao6677 LV25
2023年2月10日
baize12345 LV1
2023年2月1日
Possess LV4
2023年2月1日
最代码官方 LV168
2023年1月30日

pxqtsht LV16
2月21日
asdfg01234 LV10
1月10日
DeanYao LV2
2023年10月11日
zhaixunfei LV8
2023年9月9日
cxy LV1
2023年8月23日
woldxy LV12
2023年8月22日
wang_d LV12
2023年8月15日
dfkk_love LV11
2023年7月27日
liqi666 LV7
2023年7月26日
爱吃鱼的猫Vital LV6
2023年7月24日