springboot多文件上传

FindData data是个实体类

public class FindDataimplements Serializable {

private Stringarticle_id;  //文章id  --主键

    private Stringuser_id;    //发表人id

    private Stringarticle;    //文字

    private Stringpicture;    //图片

    private Stringvoice;      //音频

    private Stringvideo;      //视频

    private Stringarticle_type;//数据类型标识

    private Dateissuetime;    //发布时间

    private Stringprasie_sum; //点赞总数

//get set 方法省略

}

——controller层代码

@RequestMapping("findController/setFindData.insert")

public int setFindData(@RequestParam("files") MultipartFile[] files, FindData data) {

    String path ="E:/picc/";//这是本地存放路径

mfindsSrvice.savefile(path, files, data);//首先存传过来的文件,存到本地,然后提取存储路径放在FindData实体类中,这一步完成了再往下执行

        datafhz =mfindsSrvice.setFindData(data);

return datafhz;

}

——service业务处理层代码

    public void savefile(String path, MultipartFile[] files, FindData data) {

FileOutputStream fout =null;

        InputStream in =null;

        try {

for (MultipartFile file : files) {

//获取文件名

String filemz = path + file.getOriginalFilename();//注意这里可以自己根据实际情况定制输出文件的名字如:年月日时分秒毫秒+随机数,而不使用原始名字。

//获取后缀名

String sname = filemz.substring(filemz.lastIndexOf("."));

//时间格式化格式

SimpleDateFormat simpleDateFormat =new SimpleDateFormat("yyyyMMddHHmmssSSS");

//获取当前时间并作为时间戳

String timeStamp = simpleDateFormat.format(new Date());

//拼接新的文件名

String newName = filemz + timeStamp + sname;

if (sname.equals(".jpg") || sname.equals(".png") || sname.equals("")) {

                            data.setPicture(newName); }

else if (sname.equals("c") || sname.equals("a") || sname.equals("b")) {

                            data.setVoice(newName); }

else if (sname.equals(".mp4") || sname.equals("d") || sname.equals("e")) {

                            data.setVideo(newName);

}else{

System.out.println("不认识"); }这些if else是为了判断文件类型,并把文件名字存到实体类中去,并通过实体类存到数据库。

fout =new FileOutputStream(new File(newName));//把文件保存到新的文件夹下,newName就是上面拼凑的新的文件夹名字

//                fout.write(file.getBytes());//这样做也可以

                in = file.getInputStream();

                int len;

                byte[] byt =new byte[1024];

                while ((len = in.read(byt)) != -1) {

fout.write(byt, 0, len);

                }

//  如果使用上面的fout.write(file.getBytes());可以如下关闭流

//                fout.close();

//                in.close();

            }

}catch (Exception e) {

e.printStackTrace();

        }finally {

if (null != fout) {

try {

fout.close();

                }catch (IOException e) {

e.printStackTrace();

                }

}

if (null != in) {

try {

in.close();

                }catch (IOException e) {

e.printStackTrace();

                }

}

}

}

        //下面返回null;可以根据自己的实际情况来返回,如k为原始文件名、v为随机文件名。也可以把返回值变为 HashMap

        //把失败文件、成功文件的List返回

        return null;

    }

}

设置长传文件大小限制
application.properties中设置可根据情况自己定义

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

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

你可能感兴趣的:(springboot多文件上传)