Java编程如何将A服务器中的文件发送到B服务器的指定文件夹。急急急求大神直接附上详细代码,非常感谢你了

 我来答
夕阳中的橘
2015-08-18
知道答主
回答量:1
采纳率:0%
帮助的人:1215
展开全部

给一种方式做参考,我这边类似。是将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();

类似参考网上有很多,不过大都是你转载他得,他转载你的,能用的不多。

少女心Eve
2015-08-18 · 记录美好生活每一天,分享生活新鲜事。
少女心Eve
采纳数:590 获赞数:714

向TA提问 私信TA
展开全部
java学习小组,希望可以一起学习进步,Java框架平台研发 378 437 335
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式