多文件上传简单的处理

多文件上传心得

以我的“单文件上传为前提”,来讲述多文件上传。在此之前,可以先看一下我的上一篇博客。

1.首先先要在表单元素file上添加属性如下:multiple

<input type="file" name="pics" multiple/>

2.上传文件时,可以选择多个文件,处理方式与单文件上传相似,只不过是下面这段代码要运行多次(即上传了几张图片就执行几次,所以不需要担心多张图片是否能被保存)


                            String nameP = item.getFieldName();
                            String value = item.getName();
                            //获取到myshop项目的根目录
                            String path = getServletContext().getRealPath("/")+"upload\\";
                            //获取后缀名
                            String suffix = value.substring(value.lastIndexOf("."));
                            //生成一个图片的名称
                            String fileName = UUID.randomUUID().toString();
                            String newFileName = path+fileName+suffix;
                            sb.append("upload/"+fileName+suffix+",");
//                            pic_list.add("upload/"+fileName+suffix);
                            File file = new File(newFileName);
                            item.write(file);
                        

3.处理多个图片路径,并保存到数据库

这个可能是大家最困惑的问题,我简单说一下思路,就是我们可以将单张图片的正确路径拼接成一个用特定分割符(我用的是逗号)分割的字符串,然后再保存到数据库。

StringBuilder sb = new StringBuilder();
sb.append("upload/"+fileName+suffix+",");
 pro_map.put(nameP,sb.toString());//是一个map

4.处理从数据库查到多图片路径

思路:将这个字符串按特定分割符转化为一个字符数组,如调用split(",")方法,(这里我们还可以用Arrays.asList()方法将数组转换为List)。然后在相应的实体中加上一个List属性,用来存放处理后的结果。
然后将重新处理的结果重新封装并进行相应。

//在Product实体类中增加一个List属性。
for (Product product : p_list) {
                    String pics = product.getPics();
                    String[] ps = pics.split(",");
                    List<String> l = Arrays.asList(ps);
                    product.setList(l);
                    prop_list.add(product);
                }

注意不要在原来的List对象或者是实体类对象上进行再次添加或赋值操作,这样处理后实体类对应的List属性依旧是null。
要重新创建一个新的对象进行再次封装。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值