Servelet上传一个汉字的名字出错的问题

今天处理一个上传文件,出现了文件名字只有一个汉字不能上传的原因!其实以前遇到过只不过忘记了怎么处理了,在此记下提醒他人和自己。

package com.hysoft.danbao;


import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;

import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.UUID;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

import com.hysoft.utils.InsertFile;

 


public class UploadServlet extends HttpServlet {
       //初始化条件             
  InputStream is=null;
  String clmc=null;
  String ysr=null;
  String ysyj=null;
  String cllj=null;
  String uploadname=null;
  String uploadname1=null;
  int kehu_id=1;

 
 public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  doPost(request, response);
 }

 public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  response.setContentType("text/html;charset=GB2312");
  PrintWriter out = response.getWriter();

  
  boolean isMultipart = ServletFileUpload.isMultipartContent(request);
     if (isMultipart == true) {
      //创建该对象
        FileItemFactory factory = new DiskFileItemFactory();
        ServletFileUpload upload = new ServletFileUpload(factory);
        List<FileItem> items = null;
  try {
   items = upload.parseRequest(request);
  } catch (FileUploadException e) {
   e.printStackTrace();
  }
  //解析request 请求,并返回FileItemIterator集合
        Iterator<FileItem> itr = items.iterator();
        while (itr.hasNext()) {
       //从集合中获得一个文件流
            FileItem item = (FileItem) itr.next();
      
            if (item.isFormField()) {
          String fieldName = item.getFieldName();
          if ("clmc".equals(fieldName)) {
         clmc=new String(item.getString().getBytes("iso-8859-1"), "GBK");
          }else if("ysr".equals(fieldName)){
           ysr=new String(item.getString().getBytes("iso-8859-1"), "GBK");
          }else if("ysyj".equals(fieldName)){
           ysyj=new String(item.getString().getBytes("iso-8859-1"), "GBK");
          }else if("kehu_id".equals(fieldName)){
           kehu_id=Integer.parseInt(item.getString());
          }
         
            }
            else {
        
           uploadname=new String(item.getName().getBytes("iso-8859-1"), "GBK");
          
           uploadname1=uploadname.substring(uploadname.lastIndexOf("."));
            is=item.getInputStream();
          
    }
        }
     } else {
      System.out.println(" form error");
     }
  System.out.println(clmc);
  System.out.println(ysr);
  System.out.println(ysyj);
 
 
 
  String realpath=request.getRealPath("/upload");
  
  File uploaddir =new File(realpath);
  if(!uploaddir.exists()){
   uploaddir.mkdir();
  }
  String savename=UUID.randomUUID().toString()+uploadname1;
  String savepath=realpath+ File.separator+savename;
  cllj="upload/"+savename;
  OutputStream out1 = new FileOutputStream(savepath);
  byte[] buffer = new byte[1024];
  int len = 0;
  while ((len = is.read(buffer)) > 0) {
   out1.write(buffer, 0, len);
   }
  out1.close();
  is.close();
  System.out.println(kehu_id);
  System.out.println(cllj);
  InsertFile.add(clmc,ysr,ysyj,cllj,kehu_id);
  out.print("文件上传成功!<br/><br/>");
  out.print("<input type='button' οnclick='window.close();window.opener.location.reload();' value='关闭窗口'>");
  

   } 
 
 }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值