java怎么上传多个文件到服务器上
解决时间 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+" ");
}
。。。。。。
这样就实现了上传文件至数据库
我要举报
大家都在看
推荐资讯