java 文件上传

@RequestMapping(value = "upload", method = RequestMethod.POST)
 @ResponseBody
 public String upload(HttpServletRequest request,
   HttpServletResponse response)
 {
  Result rt= new Result();
  response.setContentType("text/html;charset=utf-8");
  // 将请求消息中的每一个项目封装成单独的DiskFileItem(FileItem接口的具体实现)的工作
  DiskFileItemFactory factory = new DiskFileItemFactory();
  factory.setSizeThreshold(4096);
  ServletFileUpload sfu = new ServletFileUpload(factory);
  sfu.setHeaderEncoding("utf-8");
  // 设置文件上传最大值
  sfu.setSizeMax(1024 * 1024 * 100);
  // 读取存放目录
  String fileDir = ROOT;
  if (request.getParameter("fileDir") != null)
  {
   fileDir = request.getParameter("fileDir").toString();
  }
  try
  {
   // 从请求中解析文件列表
   List<FileItem> files = sfu.parseRequest(request);
   String directory = Directorys.localhost(fileDir);
   FileUtils.validateAndMkdir(directory);
   List<String> names = Lists.newArrayList();
   for (FileItem file : files)
   {
    if (file.isFormField())
    {
     continue;
    }
    //中文名无法下载,所以改为其他
    String fileName = file.getName();
    Pattern p = Pattern.compile("[\u4e00-\u9fa5]");
       Matcher m = p.matcher(fileName);
       if (m.find()) {
          fileName=DateProvider.format()+ file.getName().substring(file.getName().lastIndexOf("."));
       }
    file.write(new File(directory + fileName));
    names.add(fileDir + fileName);
   }
   rt.setResult(names);
  }
  catch (Exception e)
  {
   log.error("UploaderController.upload", e);
   rt.setCode(GooidServerSay.CODE_ERROR);
   rt.setMsg(MessageUtils.build(e));
  }
  return JSON.stringify(rt);
 }

此代码存在一个问题,文件名如果设置为中文名称时,上传会失败,这个问题暂未解决,这里 我用的日期保存,如果有谁知道中文无法上传的问题怎么解决,可以下方评论,大家一起交流

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值