永发信息网

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

答案:2  悬赏:20  手机版
解决时间 2021-02-19 16:55
java怎么上传多个文件到服务器上
最佳答案
据我的能力理解不太能同时实现。
我讲下我的实现思路:
1,你有一台作为接收,文件上传至此, 得到file1;
2,file1,输出到另一台机器 建议采用(ftp协议),至于是同步还是异步执行无关紧要。
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           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+" ");
  •         }
  • 。。。。。。
  • 这样就实现了上传文件至数据库
  • 我要举报
    如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
    大家都在看
    甜菊茶的用途
    梦幻西游藏宝阁怎么买号,具体介绍一下
    有关生物体对刺激做出反应的表述,错误的是A.
    金桥网咖我想知道这个在什么地方
    小米note支持内存扩展么
    我的易联通固定电话HCD9989(1)P/TSDL-19C的说
    蹲厕马桶搋子怎么用
    《盛世危言》中有这样一段话:自中外通商以来
    规划三路地址有知道的么?有点事想过去
    问:第一次见面的一个男孩昨天他带我出去玩,
    宏宝美术社地址在哪,我要去那里办事
    CS1.6怎么调整重力参数?
    【递延所得税资产】下列各项确认递延所得税资
    好滋味菜馆在什么地方啊,我要过去处理事情
    朵唯手机d360软件下载会说应用程序未安装
    推荐资讯
    臻之美地址在什么地方,想过去办事
    长沙西站到高桥大市场财富大夏公交路线
    坚果yq603怎么截屏?
    根据《土地管理法>的规定,耕地承包期的年限
    成都火车北站行李是按什么标准收费的?每个包
    以撒的结合胎衣贪婪最后的存钱罐有什么用
    一个圆锥形稻谷堆,底面积是12.56平方米,高12
    停车场停了一些汽车和摩托车,共有42个轮子,
    六安到临泉的汽车
    临汾同盛实验中学在什么地方啊,我要过去处理
    植物叶肉细胞原生质体的分离和培养的主要过程
    被蜂蜜咬一口有没有什么事情
    正方形一边上任一点到这个正方形两条对角线的
    阴历怎么看 ?