sesame 发表于 2013-5-4 16:45:10

关于文件上传

请问该如何实现文件上传,3.1版本只看到这种写法:
UploadFile uploadFile = new UploadFile(request, icon);
                uploadFile.setCusPath("plug-in/accordion/images");
                uploadFile.setExtend("extend");
                uploadFile.setTitleField("iconclas");
                uploadFile.setRealPath("iconPath");
                uploadFile.setObject(icon);
                uploadFile.setByteField("iconContent");
                uploadFile.setRename(false);
                systemService.uploadFile(uploadFile);


问题是icon不是我的pojo,想自己写上传方法得到的request对象又不是common-fileupload需要的,请赐教!

GIN 发表于 2013-5-4 21:45:25

本帖最后由 GIN 于 2013-5-4 21:46 编辑

         /**
         * 上传文件
         *
         * @param request
         * @return
         * @throws Exception
         */
      @RequestMapping(params = "saveFiles", method = RequestMethod.POST)
      @ResponseBody
      public AjaxJson saveFiles(HttpServletRequest request) throws Exception {

                // 把压缩包里面的jar拷贝到工程的lib下面即可 主要方法介绍
                //新建一个SmartUpload对象
                AjaxJson j = new AjaxJson();

                String fileName = null;
                UploadFile uploadFile = new UploadFile(request);
                String ctxPath = request.getSession().getServletContext().getRealPath("");
                File file = new File(ctxPath);
                if (!file.exists()) {
                        file.mkdir();// 创建文件根目录
                }
                MultipartHttpServletRequest multipartRequest = uploadFile.getMultipartRequest();
                Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
                for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
                        MultipartFile mf = entity.getValue();// 获取上传文件对象
                        fileName = mf.getOriginalFilename();// 获取文件名
                        String savePath = file.getPath() + "/" + fileName;// 上传后的文件绝对路径
                        System.out.println("上传后路径:"+savePath);
                        File savefile = new File(savePath);
                        try {
                              FileCopyUtils.copy(mf.getBytes(), savefile);
                        } catch (IOException e) {
                              e.printStackTrace();
                        }
                }

                message = "上传成功";
                j.setMsg(message);
                return j;
      }

sesame 发表于 2013-5-5 12:00:11

感谢,问题是如果同时上传2张图片会执行2次这个saveFiles方法,有办法让他只执行一次吗?

sesame 发表于 2013-5-5 12:03:39

GIN 发表于 2013-5-4 21:45 static/image/common/back.gif


感谢,问题是如果同时上传2张图片会执行2次这个saveFiles方法,有办法让他只执行一次吗?

GIN 发表于 2013-5-5 12:34:52

sesame 发表于 2013-5-5 12:03 static/image/common/back.gif
感谢,问题是如果同时上传2张图片会执行2次这个saveFiles方法,有办法让他只执行一次吗?
...

把多个文件放在一个表单里 统一提交

GIN 发表于 2013-5-5 12:35:55

见2楼的程序代码 第25行会迭代表单里的文件 就是处理多个文件上传的情况的

sesame 发表于 2013-5-5 13:41:41

GIN 发表于 2013-5-5 12:35 static/image/common/back.gif
见2楼的程序代码 第25行会迭代表单里的文件 就是处理多个文件上传的情况的 ...

现在用jeecg例子就只有一个表单提交,但是是可以选择多个文件的,debug了一下一个文件会激发一次saveFiles方法,如果同时选择了多个会执行多次saveFiles方法。

GIN 发表于 2013-5-5 14:12:34

sesame 发表于 2013-5-5 13:41 static/image/common/back.gif
现在用jeecg例子就只有一个表单提交,但是是可以选择多个文件的,debug了一下一个文件会激发一次saveFile ...

jeecg里上传文件有几种方式 一种是自动上传 选择文件后就会触发提交到控制器还有就是表单提交的方式 最后统一提交 你这样可能是用了自动上传吧 才会选一个文件提交一次?

sesame 发表于 2013-5-5 14:21:54

GIN 发表于 2013-5-5 14:12 static/image/common/back.gif
jeecg里上传文件有几种方式 一种是自动上传 选择文件后就会触发提交到控制器还有就是表单提交的方式 最 ...

我用的是这种方式
    <div class="form">
   <t:upload name="file_upload" uploader="jdController.do?saveImgs" extend="*.png;*.jpg" id="file_upload" formData="shortName,level,detail,sid,pid"></t:upload>
    </div>
最后是有上传文件按钮提交,非自动提交。

GIN 发表于 2013-5-5 14:49:49

本帖最后由 GIN 于 2013-5-5 14:56 编辑




jsp代码:

<td class="value" width="30%">
   <t:upload queueID="test" multi="true" name="fiels" buttonText="上传文件" dialog="false" callback="openrcon"uploader="systemController.do?saveFiles" extend="office" id="default" formData="documentTitle"></t:upload>
    </td>


<td class="value" id="test">
</td>


queueID 是指定该上传 是多个文件队列上传值为显示实时上传的队列的容器id
multi 是允许多文件上传

这样 只需要一个<t:upload> 就可以了

希望可以帮助你


页: [1] 2 3
查看完整版本: 关于文件上传