Java编程如何将A服务器中的文件发送到B服务器的指定文件夹。急急急求大神直接附上详细代码,非常感谢你了
2个回答
展开全部
给一种方式做参考,我这边类似。是将A作为客户端,上传文件到服务器B,服务器B以struts接受请求做处理。使用httpclient。
/**
* 将文件上传到服务端,并接收其返回信息
* @param client DefaultHttpClient
* @param url 服务器url:如:http://localhost:8080/test/upload.action
* @param filePath 文件路径
* @param params 上传参数
* @param encode 编码集,主要用来解析返回的response中的信息
* @return 解析出的返回信息,如服务器那边的成功提示:“success”
*/
public static String sendHttpClientPostToUpload(DefaultHttpClient client, String url, String filePath,
Map<String, String> params, String encode){
MultipartEntity mpEntity = new MultipartEntity();
if (params != null && !params.isEmpty()) {
for (Map.Entry<String, String> entry : params.entrySet()) {
// 参数名
StringBody par;
try {
par = new StringBody(entry.getValue().toString());
mpEntity.addPart(entry.getKey(), par);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
}
// 图片
if (!filePath.equals("")) {
FileBody file = new FileBody(new File(filePath));
mpEntity.addPart("file", file);
}
// 使用HttpPost对象设置发送的URL路径
HttpPost post = new HttpPost(url);
post.setEntity(mpEntity);
// 创建一个浏览器对象,以把POST对象向服务器发送,并返回响应消息
try {
HttpResponse response = client.execute(post);
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
// 封装了服务器端返回的数据
HttpEntity responseEntity = response.getEntity();
//*******这里是对服务器返回的session进行记录的操作,以获取sessionId
// CookieStore mCookieStore = ((DefaultHttpClient) client).getCookieStore();
// List<Cookie> cookies = mCookieStore.getCookies();
// for (int i = 0; i < cookies.size(); i++) {
// // 如果cookies头和"JSESSIONID" 就记录sessionID
// if ("JSESSIONID".equals(cookies.get(i).getName())) {
// String sessionId = cookies.get(i).getValue();
// break;
// }
// }
//*******完成
InputStream is = responseEntity.getContent();
return changeInputStream(responseEntity.getContent(), encode);
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return "";
}
/**
*
* @param inputStream
* @param encode
* @return
*/
private static String changeInputStream(InputStream inputStream,
String encode) {
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
int len = 0;
byte[] date = new byte[1024];
String result = "";
try {
while ((len = inputStream.read(date)) != -1) {
outputStream.write(date, 0, len);
}
result = new String(outputStream.toByteArray(), encode);
return result;
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
需要的参数client,new 一个就可以了。
DefaultHttpClient client = new DefaultHttpClient();
类似参考网上有很多,不过大都是你转载他得,他转载你的,能用的不多。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询