`
xinbo_27
  • 浏览: 3212 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

etmvc upload问题

 
阅读更多

et-mvc上传文件是对Commons-fileupload组件的封装,所以使用时需要引入commons-fileupload.jar, commons-io.jar, commons-logging.jar三个包。
上传文件的第一步就是象下面一样创建一个multipart/form-data表单:
<form action="/upload/doUpload" method="POST" enctype="multipart/form-data">            

 <input type="file" name="file">            

 <input type="submit" value="提交">        

</form>然后编写控制器,定义上传的Action方法:

 

public class UploadController extends ApplicationController{     

 public String doUpload(MultipartFile file) throws Exception{       

   file.transferTo(new File("e:/temp/" + file.getOriginalFilename()));        

   return file.getOriginalFilename()+":"+file.getSize();    

 } 

}

  

上传的方法,封装好了,可以获取表单里正常传入的值。

上传时候,用原始的方法却上传不成功(代码如下):

boolean isFileUpload = ServletFileUpload.isMultipartContent(request);//检测是否存在文件上传的请求
     if(isFileUpload){
      // 处理磁盘文件工厂类
      FileItemFactory factory = new DiskFileItemFactory();
      // 文件上传的处理类
      ServletFileUpload upload = new ServletFileUpload(factory);
      //解析上传的文件
      List fileItems = upload.parseRequest(request);

     for (Iterator iterator = fileItems.iterator(); iterator.hasNext();){
      FileItem fileItem= (FileItem) iterator.next();
      if(!fileItem.isFormField()){
       
      }else{
       String contentType = fileItem.getContentType().toLowerCase();// 比如:image/pjpg
       //进行格式的判断
       if (contentType.indexOf("excel") != -1) {
        //对文件上传的处理

        String fileUploadPath=fileItem.getName();

       // 上传之后文件的名字要唯一:采用当前上传的系统时间的毫秒数作为文件的名字

        String time = System.currentTimeMillis() + "";// 当前系统时间

        String postfix = fileUploadPath.substring(fileUploadPath.lastIndexOf("."));//获取文件的后缀名

        String fileName = time+postfix;

        String contextPath =this.getServletContext().getRealPath("upload");//获取工程中的名为upload的目录
        
        System.out.println(contextPath);

        filePath = contextPath+File.separator+fileName;
        

        file = new File(filePath);//代表上传文件的目录

        System.out.println("上传成功!");
        
        FileOutputStream output =  new FileOutputStream(file);

        InputStream in = fileItem.getInputStream();

        IOUtils.copy(in,output);
        
        IOUtils.closeQuietly(output);//关闭输出流

        IOUtils.closeQuietly(in);//关闭输出流
        
        b = true;
        continue;
        
       }else {
        System.out.println("文件格式错误");
        continue;
       }
      }
     }
     }

  

这种方法,总是在List fileItems = upload.parseRequest(request);这里获取不到值,还没确定原因,有待于进一步研究。

 

 

需要下载文件时,可以使用BinaryView,如下所示:
    public BinaryView download() throws Exception{        

          BinaryView view = BinaryView.loadFromFile("e:/temp/arrow.gif");        

          view.setContentType("image/gif");        

           //view.setContentDisposition("attachment"); //下载        

            return view;    

    }



看起来应该是比较简单的。

 

 

 

分享到:
评论

相关推荐

    aliyun-upload-sdk-1.5.0.zip

    aliyun-upload-sdk-1.5.0.zipaliyun-upload-sdk-1.5.0.zipaliyun-upload-sdk-1.5.0.zipaliyun-upload-sdk-1.5.0.zipaliyun-upload-sdk-1.5.0.zipaliyun-upload-sdk-1.5.0.zipaliyun-upload-sdk-1.5.0.zipaliyun-...

    commons-upload.jar资源包

    commons-upload.jar资源包commons-upload.jar资源包commons-upload.jar资源包commons-upload.jar资源包commons-upload.jar资源包commons-upload.jar资源包commons-upload.jar资源包commons-upload.jar资源包commons-...

    ajax_uploadajax_upload

    ajax_uploadajax_uploadajax_uploadajax_uploadajax_uploadajax_uploadajax_uploadajax_uploadajax_uploadajax_uploadajax_uploadajax_uploadajax_uploadajax_uploadajax_uploadajax_upload

    upload,upload

    upload,upload,upload,uploadupload,upload

    nginx-upload-module-master.rar_modules_nginx_upload

    Nginx upload modules

    jquery上传插件upload

    jquery 上传 插件 upload jquery上传插件upload jquery 上传 插件 upload jquery上传插件upload jquery 上传 插件 upload jquery上传插件upload jquery 上传 插件 upload jquery上传插件upload jquery 上传 插件 ...

    包含upload-module的nginx-1.21.6的windows平台64位的二进制文件

    包含upload-module的nginx-1.21.6,针对windows平台64位的编译的二进制(exe)文件。 为了upload-module能在window平台编译通过,进行部分代码修改,修改内容详见https://github.com/chnykn/bimface

    upload-dragger.vue

    upload-dragger.vue

    upload_5xsoft.inc

    upload_5xsoft.inc 接收方法案例 &lt;!-- #include FILE="upload_5xsoft.inc"--&gt; set upload=new upload_5xsoft set file=upload.file&#40;"file"&#41; if file.fileSize&gt;0 then file.saveAs Server.mappath...

    jodd-upload-3.7.1-API文档-中文版.zip

    赠送jar包:jodd-upload-3.7.1.jar; 赠送原API文档:jodd-upload-3.7.1-javadoc.jar; 赠送源代码:jodd-upload-3.7.1-sources.jar; 赠送Maven依赖信息文件:jodd-upload-3.7.1.pom; 包含翻译后的API文档:jodd-...

    前端upload插件uploadify

    前端upload插件uploadify前端upload插件uploadify前端upload插件uploadify

    upload文件上传移动转换

    信息系统中upload文件上传移动转换

    jodd-upload-3.7.1-API文档-中英对照版.zip

    赠送jar包:jodd-upload-3.7.1.jar; 赠送原API文档:jodd-upload-3.7.1-javadoc.jar; 赠送源代码:jodd-upload-3.7.1-sources.jar; 赠送Maven依赖信息文件:jodd-upload-3.7.1.pom; 包含翻译后的API文档:jodd-...

    vue中el-upload上传图片到七牛的示例代码

    一、思路,从后台获取七牛token,上传图片到七牛,获取返回图片路径放入el-upload。 二、代码。 &lt;el v-model=listVideoQuery.orgLogo change=orgLogoChange&gt;&lt;/el&gt; &lt;el-upload class=upload-demo :file-list=...

    upload插件

    upload的扩展插件,直接用,很方便,如果需要这一插件的可以看一下。

    file-upload.vue

    &lt;file-upload :isRed="判断是否是必须的" @upload="上传成功的函数" :inImgList="要渲染的图片列表" :inFiles="要渲染图片id列表" :filesList="图片列表" src="默认上传图片" :...

    Tp3.2上传图片Upload文件

    解决thinkphp3.2出现Class 'Think\Upload' not found的问题,下载后直接扔到ThinkPHP\Library\Think下面直接解压出来然后刷新你的程序就能解决

    开源项目-olahol-go-imageupload#go-imageupload.zip

    开源项目-olahol-go-imageupload#go-imageupload.zip,go-imageupload: Gracefully handle image uploading and thumbnail creation.

    aliyun-java-vod-upload-1.4.14

    aliyun-java-vod-upload-1.4.14

Global site tag (gtag.js) - Google Analytics