文件上传两种方法

第一种文件上传方式,用到commons-fileupload.jar,commons-io.jar

 

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

HttpSession session = request.getSession();

session.setAttribute("SESSIONID",session.getId());

FileItemFactory factory = new DiskFileItemFactory();

ServletFileUpload upload = new ServletFileUpload(factory);

try {

List<FileItem> items = upload.parseRequest(request);

Iterator<FileItem> itr = items.iterator();

while(itr.hasNext()){

FileItem item=(FileItem)itr.next();

String fileName=item.getName();

if(fileName!=null){

File fullFile=new File(item.getName());

File savedFile=new File("d:/uploads",fullFile.getName());

item.write(savedFile);

}

}

} catch (FileUploadException e) {

e.printStackTrace();

} catch (Exception e) {

e.printStackTrace();

}

}

 

第二种文件上传方式,这里用到cos组件方式上传,需要导入cos.jarn,不过srping中的multipart包已经有了....

public ModelAndView uploadImageCoCustQuiz(HttpServletRequest request,HttpServletResponse response) throws Exception {
  System.out.print("我进到上传文件的方法了!!!!");
  
  MultipartFile mf = null;
  File file = null;
  String upLoadFilePath = null;
  String fileName=null;
  JSONObject jo = new JSONObject();
  try{
   
   final String path = "D:/uploadFile/";
   
   final File dirPath = new File(path);
   if(!dirPath.exists())
    dirPath.mkdirs();

 

//让request能转换成multipart...对象,那么ext上传文件一定要设置 某个form.getForm().fileUpload  = true或者设置

formpanel的enctype : 'multipart/form-data',

 

 

  MultipartResolver resolver = new CommonsMultipartResolver();
  if(resolver.isMultipart(request)){

               final MultipartHttpServletRequest mhs = (MultipartHttpServletRequest) request;

               //只要你前台的文本框是文件类型的,不管你有没有上传文件,后台依然有得到流,只是应该说这个流是否为无效流,如果是无效流则

jdbctemplate插入或者更新时就是插入null了..

               //只要前台的文本框为文件类型,不管有没有上传文件,mf都可以得到,不会为空
               mf = mhs.getFile("uploadFile");

               final String uploadFileName = mf.getOriginalFilename();

              //mf.getInputStream() 得到文件输入流
              if(uploadFileName!=null || uploadFileName!="")
             { 
                final String objStr = uploadFileName.substring(uploadFileName.lastIndexOf(".")).trim();
                //String uploadFileNameStr = uploadFileName.substring(0,uploadFileName.indexOf(".")).trim();
                 fileName = "1" + objStr;
             } 
    
              //fileName.trim();
              upLoadFilePath = path+uploadFileName;
              file = new File(upLoadFilePath);
              mf.transferTo(file);
              //上传文件完毕
   
            } catch (Exception e) {
                  System.out.print("上传文件方法中出现异常。。。。。。。。。。。。。。。。。。。");
           } 
  }else{
           System.out.println("连文件都不是!!!");
  }

 
  jo.put("success", true);
  
  response.setContentType("text/html;charset=utf-8");
  PrintWriter out = response.getWriter();
  out.print(jo.toString());
  out.flush();
  out.close();
  return null;
 }

 

 

cos组件的multipartRequest的8个构造方法和8个方法

在Cos组件中,MultipartRequest类主要负责文件上传的处理。MultipartRequest有8个构造函数:

1.Public MultipartRequest ( HttpServletRequest request, String saveDirectory,) throws IOException



2.Public MultipartRequest ( HttpServletRequest request, String saveDirectory, int maxPostSize) throws IOException



3.Public MultipartRequest ( HttpServletRequest request, String saveDirectory, int maxPostSize, FileRenamePolicy policy) throws IOException



4.Public MultipartRequest ( HttpServletRequest request, String saveDirectory, int maxPostSize, String encoding) throws IOException



5.Public MultipartRequest ( HttpServletRequest request, String saveDirectory, int maxPostSize, String encoding, FileRenamePolicy policy) throws IOException



6.Public MultipartRequest ( HttpServletRequest request, String saveDirectory, String encoding) throws IOException



7.Public MultipartRequest ( HttpServletRequest request, String saveDirectory) throws IOException



8.Public MultipartRequest ( HttpServletRequest request, String saveDirectory, int maxPostSize) throws IOException



前6种构造函数都是用来专门处理HTTP协议的,saveDirectory是上传文件要存储在服务器端的目录名称;maxPostSize是用来限制用户上传文件大小的,若超过maxPostSzie,会产生IOException,默认上传文件大小是1MB;encoding可以设定用何种编码方式来上传文件名称,可以解决中文问题。

MultipartRequest类工具有8种方法,利用这些方法,我们可以取得请求的相关信息:

Public Enumeration getParameterNames() 可以取得请求参数的名称

public String getParameter(String name)  此方法传回参数为name的值

public String[] getParameterValues(String name) 此方法主要用在取得当一指定参数具有多个值时,它会传回String的数组

public Enumeration getFileName() 传回所有文件输入类型的名称

public String getFilesystemNames(String name) 用此方法得到上传文件的真正的文件名,这里的name指文件输入类型的名称

public String getContentType(String name) 此方法得到上传文件的内容类型

public File getFile(String name) 此方法得到一个文件对象,代表储存在服务器上的name文件

public String getOriginalFileName(String name) 返回文件在修改政策有效之前的文件名

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值