httpclient 从服务器A 上传文件到服务器B

本文档展示了如何使用HttpClient库从一个服务器(服务器A)将文件上传到另一个服务器(服务器B)。在服务器B上,文件上传后会进行处理,包括检查文件大小、重命名以避免冲突,并根据特定需求执行XML SQL操作。
摘要由CSDN通过智能技术生成

//服务器A:

public String HttpUploadFile() throws HttpException, IOException{

//服务器B的地址如:http://192.168.5.12:8080/exeProject

String upCascadeWebUrl = getHttpSession().getAttribute("upCascadeWebUrl").toString();

//获取form表单或地址栏的请求参数

Map<String,String[]> mparams = getHttpRequest().getParameterMap();
String actionUrl = upCascadeWebUrl+"/CascadeSuc.do";

PostMethod postMethod = null;

//提交表单数据不含文件

if(upfile==null){
//级联地址
postMethod = new PostMethod(actionUrl);
for (String key : mparams.keySet()) {
postMethod.setParameter(key, mparams.get(key)[0]);
}
postMethod.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF-8");

}else{
//文件上传本地服务器
FileInputStream fins = new FileInputStream(upfile);
String filePath = getRealPath("/upload")+"\\"+upfileFileName;
FileOutputStream fout = new FileOutputStream(filePath);
byte[]bts = new byte[1024];
int count = 0;
while((count=fins.read(bts))!=-1){
fout.write(bts,0,count);

}
fins.close();
fout.close();
//文件跨域上传
postMethod = new PostMethod(actionUrl);
upfile = new File(filePath);
//文件参数,参数"UTF-8"(和页面提交字符集编码对应)解决文件名中文乱码问题
FilePart fp = new FilePart("upfile",upfile,null,"UTF-8");
//普通参数上传,参数"UTF-8"解决中文乱码问题
StringPart flowType = new StringPart("flowType", mparams.get("flowType")[0], "UTF-8");
StringPart globalDomainId = new StringPart("globalDomainId", mparams.get("globalDomainId")[0], "UTF-8");
StringPart sendUser = new StringPart("sendUser", mparams.get("sendUser")[0], "UTF-8");
StringPart processPlatName = new StringPart("processPlatName", mparams.get("processPlatName")[0], "UTF-8");
StringPart dealDomain = new StringPart("dstPlateform", mparams.get("dstPlateform")[0], "UTF-8");
StringPart isSendMsg = new StringPart("isSendMsg", mparams.get("isSendMsg")[0], "UTF-8");
StringPart ip = new StringPart("ip", mparams.get("ip")[0], "UTF-8");
StringPart mac = new StringPart("mac", mparams.get("mac")[0], "UTF-8");
StringPart register = new StringPart("register", mparams.get("register")[0], "UTF-8");
StringPart occuredTime = new StringPart("occuredTime", mparams.get("occuredTime")[0], "UTF-8");
StringPart eventName = new StringPart("eventName", mparams.get("eventName")[0], "UTF-8");
StringPart content = new StringPart("content", mparams.get("content")[0],"UTF-8");
StringPart fileName = new StringPart("fileName", upfileFileName,"UTF-8");
StringPart eventSource = new StringPart("eventSource", mparams.get("eventSource")[0],"UTF-8");
Part[] parts = {flowType,globalDomainId,sendUser,processPlatName,dealDomain,isSendMsg,ip,mac,register,occuredTime,eventName,content,fileName,eventSource,fp};
MultipartRequestEntity mre = new MultipartRequestEntity(parts,postMethod.getParams());
postMethod.setRequestEntity(mre);
}
postMethod.setRequestHeader("cascade", "1");//设置消息头
HttpClient client = new HttpClient();
client.getHttpConnectionManager().getParams().setConnectionTimeout(50000);
int status = client.executeMethod(postMethod);
if(status == HttpStatus.SC_OK){
String responseText = postMethod.getResponseBodyAsString();
getResponse().setContentType("text/html;charset=UTF-8");
getResponse().getWriter().write(responseText);
postMethod.releaseConnection();
}else{
String responseText = "失败!";
getResponse().setContentType("text/html;charset=UTF-8");
getResponse().getWriter().write(responseText);
}
return NONE;

}




//服务器B:

public String CascadeSuc() throws IOException{
String msg = "";
String attachment = "";
int flag = 0;

Map<String,String[]> params = getHttpRequest().getParameterMap();
Map<String,Object> mparams = new HashMap<String, Object>();
for(String key:params.keySet()){
mparams.put(key,params.get(key)[0]);
}
if(upfile!=null){
Date date = new Date();
upfileFileName = mparams.get("fileName").toString();
upfileFileName = upfileFileName.substring(0, upfileFileName.lastIndexOf("."))+date.getTime()+upfileFileName.substring(upfileFileName.lastIndexOf("."));
// i:上传成功与否;-1代表失败,1代表成功
// 打包的zip文件名为"上传文件名_日期.zip",防止上传时文件名重复后发生覆盖
String saveFileName = upfileFileName.substring(0, upfileFileName.lastIndexOf("."))+".zip";
flag = uploadProcessFile(upfile,saveFileName,upfileFileName);
attachment = "upload/"+ saveFileName;
if(flag == 2){
msg = "上传文件超过30M限制!";
msg = "<div id='msgInfo'>"+msg+"</div>";
getResponse().setContentType("text/html");
getResponse().getWriter().write(msg);
return NONE;

}if(flag == -1){
msg = "文件上传失败!";
msg = "<div id='msgInfo'>"+msg+"</div>";
getResponse().setContentType("text/html");
getResponse().getWriter().write(msg);
return NONE;
}

}
//根据需求参数处理



DBRecordSet dbrs = new DBRecordSet();
executeXmlSQL(dbrs, "creatPreAlarm@process", mparams);

if(dbrs.getAffectRowCount()>0){
msg = "成功!";
}else{
msg = "失败!";
}
msg = "<div id='msgInfo'>"+msg+"</div>";
getResponse().setContentType("text/html");
getResponse().getWriter().write(msg);
return NONE;
}

//文件上传方法

public int uploadProcessFile(upfile,saveFileName,upfileFileName){

return flag;

//文件上传

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值