永发信息网

java怎么上传多个文件到服务器上

答案:2  悬赏:20  手机版
解决时间 2021-02-19 16:55
  • 提问者网友:凉末
  • 2021-02-19 04:19
java怎么上传多个文件到服务器上
最佳答案
  • 五星知识达人网友:人類模型
  • 2021-02-19 04:31
据我的能力理解不太能同时实现。
我讲下我的实现思路:
1,你有一台作为接收,文件上传至此, 得到file1;
2,file1,输出到另一台机器 建议采用(ftp协议),至于是同步还是异步执行无关紧要。
3,其他逻辑。
全部回答
  • 1楼网友:由着我着迷
  • 2021-02-19 04:43
  • 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           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+" ");
  •         }
  • 。。。。。。
  • 这样就实现了上传文件至数据库
  • 我要举报
    如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
    点此我要举报以上问答信息
    大家都在看
    推荐资讯