首页>>后端>>SpringBoot->springboot上传pdf文档?

springboot上传pdf文档?

时间:2023-12-03 本站 点击:0

SpringBoot超大文件上传如何实现?

不管什么技术,超大文件上传(超出一次tcp上限)都是要做分片和合并的,无非是自己做还是找控件的差别。

另外,springboot是后台接收,前端实现是由前端框架负责,比如vue。

以下是Vue+Springboot实现大文件上传的二种方式:

1、利用ElementUI的el-upload

优点:

简单方便,可以实现功能

缺点:

上传速度太慢,没有分片单线程上传1个G的文件即使在局域网也很慢

上传显示的进度条不准确,进度已经100%了,但是还需要等很久在服务端才生成完文

2、利用百度的webuploader

优点:

WebUploader是网上比较推荐的方式,分片上传大文件速度很快。

缺点:

必须依赖 jquery

不能 import 导入,只能在 index.html 里包含。

3. 利用vue-uploader

vue-uploader 是基于vue的uploader组件,缺省就是分片上传。

通过npm安装,基本流程参考github上的说明即可。

上传的基本原理就是前端根据文件大小,按块大小分成很多块,然后多线程同时上传多个块,同时调用服务端的上传接口,服务端会生成很多小块小块的文件。

所有块都上传完之后,前端再调用一个服务端的merge接口,服务端把前面收到的所有块文件按顺序组合成最终的文件。

springboot多文件上传

MultipartFile提供了以下方法来获取上传文件的信息:

getOriginalFilename,获取上传的文件名字;

getBytes,获取上传文件内容,转为字节数组;

getInputStream,获取一个InputStream;

isEmpty,文件上传内容为空,或者根本就没有文件上传;

getSize,文件上传的大小。

transferTo(File dest),保存文件到目标文件系统;

同时上传多个文件,则使用MultipartFile数组类来接受多个文件上传:

//多文件上传 @RequestMapping(value = "/batch/upload", method = RequestMethod.POST)

    @ResponseBody    public String handleFileUpload(HttpServletRequest request){

        ListMultipartFile files = ((MultipartHttpServletRequest) request)

                .getFiles("file");

        MultipartFile file = null;

        BufferedOutputStream stream = null;

        for (int i = 0; i files.size(); ++i) {

            file = files.get(i);

            if (!file.isEmpty()) {

                try {

                    byte[] bytes = file.getBytes();

                    stream = new BufferedOutputStream(new FileOutputStream(

                            new File(file.getOriginalFilename())));

                    stream.write(bytes);

                    stream.close();

                } catch (Exception e) {

                    stream = null;

                    return "You failed to upload " + i + " = "                            + e.getMessage();

                }

            } else {

                return "You failed to upload " + i

                        + " because the file was empty.";

            }

        }

        return "upload successful";

    }

可以通过配置application.properties对SpringBoot上传的文件进行限定默认为如下配置:

spring.servlet.multipart.enabled=true

spring.servlet.multipart.file-size-threshold=0

spring.servlet.multipart.location=

spring.servlet.multipart.max-file-size=1MB

spring.servlet.multipart.max-request-size=10MB

spring.servlet.multipart.resolve-lazily=false

enabled默认为true,既允许附件上传。

file-size-threshold限定了当上传文件超过一定长度时,就先写到临时文件里。有助于上传文件不占用过多的内存,单位是MB或KB,默认0,既不限定阈值。

location指的是临时文件的存放目录,如果不设定,则web服务器提供一个临时目录。

max-file-size属性指定了单个文件的最大长度,默认1MB,max-request-size属性说明单次HTTP请求上传的最大长度,默认10MB.

resolve-lazily表示当文件和参数被访问的时候再被解析成文件。

【第13期】springboot: springboot操作pdf

一、pdf模板制作

1)word编辑模板

2)转成pdf模板

这个比较简单,wps另存为pdf格式就行

然后,对其中的变量字段进行修改,改成和程序中的实体对象字段对应,这一步很重要,切记。

双击后,修改文本属性,可以设置字体大小、字体类型以及其它的,自己操作一遍就ok了。

二、springboot对接pdf

1)依赖包引入

2)pdf工具类

service

在程序中调用成功后,就ok了


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:/SpringBoot/10607.html