java怎么实现上传文件到服务器

 我来答
昔空炜j
2016-10-18 · 超过30用户采纳过TA的回答
知道答主
回答量:51
采纳率:0%
帮助的人:15.3万
展开全部
  • common-fileupload是jakarta项目组开发的一个功能很强大的上传文件组件

  • 下面先介绍上传文件到服务器(多文件上传):

  • import javax.servlet.*;

  • import javax.servlet.http.*;

  • import java.io.*;

  • import java.util.*;

  • import java.util.regex.*;

  • import org.apache.commons.fileupload.*;


  • public class upload extends HttpServlet {

  •   private static final String CONTENT_TYPE = "text/html; charset=GB2312";

  •   //Process the HTTP Post request

  •   public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

  •     response.setContentType(CONTENT_TYPE);

  •     PrintWriter out=response.getWriter();

  •     try {

  •     DiskFileUpload fu = new DiskFileUpload();

  •  // 设置允许用户上传文件大小,单位:字节,这里设为2m

  •  fu.setSizeMax(2*1024*1024);

  •  // 设置最多只允许在内存中存储的数据,单位:字节

  •  fu.setSizeThreshold(4096);

  •  // 设置一旦文件大小超过getSizeThreshold()的值时数据存放在硬盘的目录

  •  fu.setRepositoryPath("c://windows//temp");

  •  //开始读取上传信息

  •  List fileItems = fu.parseRequest(request);

  •  // 依次处理每个上传的文件

  •    Iterator iter = fileItems.iterator();

  • //正则匹配,过滤路径取文件名

  •    String regExp=".+////(.+)$";

  • //过滤掉的文件类型

  • String[] errorType={".exe",".com",".cgi",".asp"};

  •    Pattern p = Pattern.compile(regExp);

  •      while (iter.hasNext()) {

  •        FileItem item = (FileItem)iter.next();

  •        //忽略其他不是文件域的所有表单信息

  •        if (!item.isFormField()) {

  •            String name = item.getName();

  •            long size = item.getSize();

  •            if((name==null||name.equals("")) && size==0)

  •                continue;

  •        Matcher m = p.matcher(name);

  •        boolean result = m.find();

  •        if (result){

  •            for (int temp=0;temp<ERRORTYPE.LENGTH;TEMP++){

  •            if (m.group(1).endsWith(errorType[temp])){

  •                  throw new IOException(name+": wrong type");

  •            }

  •            }

  •            try{

  • //保存上传的文件到指定的目录

  • //在下文中上传文件至数据库时,将对这里改写

  •            item.write(new File("d://" + m.group(1)));

  • out.print(name+"  "+size+"");

  •            }

  •            catch(Exception e){

  •              out.println(e);

  •            }

  • }

  •        else

  •        {

  •          throw new IOException("fail to upload");

  •        }

  •        }

  •    }

  • }

  •  catch (IOException e){

  •    out.println(e);

  •  }

  •  catch (FileUploadException e){

  •       out.println(e);

  •  }

  •  

  •   }

  • }

  • 现在介绍上传文件到服务器,下面只写出相关代码:

  • 以sql2000为例,表结构如下:

  • 字段名:name    filecode

  • 类型: varchar     image

  • 数据库插入代码为:PreparedStatement pstmt=conn.prepareStatement("insert into test values(?,?)");

  • 代码如下:

  • 。。。。。。

  • try{

  •         这段代码如果不去掉,将一同写入到服务器中

  •         //item.write(new File("d://" + m.group(1)));

  •              

  •         int byteread=0;

  •         //读取输入流,也就是上传的文件内容

  •         InputStream inStream=item.getInputStream();              

  • pstmt.setString(1,m.group(1));

  •         pstmt.setBinaryStream(2,inStream,(int)size);

  •         pstmt.executeUpdate();

  •         inStream.close();

  • out.println(name+"  "+size+" ");

  •         }

  • 。。。。。。

  • 这样就实现了上传文件至数据库

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式