JAVA 把文件传到服务器.......

JAVA 把文件传到服务器.......,第1张

文件上传到A以后 放到服务器上面 然后他就有一个绝对的访问路径 也就是对应一个绝对的url 这样就好办了

Java提供了对URL访问和大量的流操作的的API,可以很容易的完成对网络上资源的存取,下面的代码段就完成了对一个网站的资源进行访问:

destUrl="http://wwwyourwebcom/java/Afilezip";

//假设你把文件放到webroot底下的java文件里面

url = new URL(destUrl);

httpUrl = (HttpURLConnection) urlopenConnection();

//连接指定的网络资源

httpUrlconnect();

//获取网络输入流

bis = new BufferedInputStream(httpUrlgetInputStream());

得到流后下面你自己想怎么操作就怎么操作了

对于怎么得到资源的连接地址这个方法很多 你可以专门提供一个Servlet 获取到输出的流后 Responsewrite转门提供服务器已上传的文件 文件名可以一天位单位返回

客户端用与上面同样的方法得到文件名后 拆分 然后再继续循环调用上面的方法 下载文件就ok了

呵呵 希望可以帮助到你

给一种方式做参考,我这边类似。是将A作为客户端,上传文件到服务器B,服务器B以struts接受请求做处理。使用httpclient。

/

      将文件上传到服务端,并接收其返回信息

      @param client DefaultHttpClient

      @param url 服务器url:如:http://localhost:8080/test/uploadaction

      @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 && !paramsisEmpty()) {

            for (MapEntry<String, String> entry : paramsentrySet()) {

                // 参数名

                StringBody par;

try {

par = new StringBody(entrygetValue()toString());

mpEntityaddPart(entrygetKey(), par);

} catch (UnsupportedEncodingException e) {

eprintStackTrace();

}

            }

        }

        

        // 

        if (!filePathequals("")) {

            FileBody file = new FileBody(new File(filePath));

            mpEntityaddPart("file", file);

        }

        

        // 使用HttpPost对象设置发送的URL路径

        HttpPost post = new HttpPost(url);

        

        postsetEntity(mpEntity);

        

        // 创建一个浏览器对象,以把POST对象向服务器发送,并返回响应消息

        try {

HttpResponse response = clientexecute(post);

if (responsegetStatusLine()getStatusCode() == HttpStatusSC_OK) {

            // 封装了服务器端返回的数据

            HttpEntity responseEntity = responsegetEntity();

            

            //这里是对服务器返回的session进行记录的操作,以获取sessionId

//             CookieStore mCookieStore = ((DefaultHttpClient) client)getCookieStore();

//             List<Cookie> cookies = mCookieStoregetCookies();

//             for (int i = 0; i < cookiessize(); i++) {

//                 // 如果cookies头和"JSESSIONID" 就记录sessionID

//                 if ("JSESSIONID"equals(cookiesget(i)getName())) {

//                     String sessionId = cookiesget(i)getValue();

//                     break;

//                 }

//             }

            //完成

            

            InputStream is = responseEntitygetContent();

            

            return changeInputStream(responseEntitygetContent(), encode);

        }

} catch (ClientProtocolException e) {

eprintStackTrace();

} catch (IOException e) {

eprintStackTrace();

}

        

        

     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 = inputStreamread(date)) != -1) {

 

                outputStreamwrite(date, 0, len);

            }

            result = new String(outputStreamtoByteArray(), encode);

             

            return result;

 

        } catch (IOException e) {

            eprintStackTrace();

        }

 

        return null;

    }

需要的参数client,new 一个就可以了。

DefaultHttpClient client = new DefaultHttpClient();

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

如果服务器开通了ftp服务,你的客户端可以实现一个ftp的客户端,通过ftp服务将文件上传到服务器的指定目录下,可以使用orgapachecommonsnetftpFTPClient这个类去实现,非常的简单,网上有很多现成的代码可以用

服务器端,做一个FTP,客户端使用APACHE的FTP组件上传。。。。。。。

服务器端实现HTTP的POST接收,,,,,客户端使用httpclient组件post上去

使用java中的io进行读取

BufferedReader bufferedReader = null;

File file = new File("文档地址+文档名docx");

if(!fileexists()){

Systemoutprintln("文件不存在");

} else {

bufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "读取的字符格式(UTF-8或GBK)"));

String lineText = null;

while((lineText = bufferedReaderreadLine()) != null){

if (linText != null && !lineTexteq("")){

Systemoutprintln("一次读取一行,一行内容为:" + lineText);

}

}

}

String realpath = ServletActionContextgetServletContext()getRealPath("/upload") ;//获取服务器路径

        String[] targetFileName = uploadFileName;

        for (int i = 0; i < uploadlength; i++) {

           File target = new File(realpath, targetFileName[i]);

              FileUtilscopyFile(upload[i], target); 

              //这是一个文件复制类copyFile()里面就是IO操作,如果你不用这个类也可以自己写一个IO复制文件的类    

         } 

其中private File[] upload;// 实际上传文件

    private String[] uploadContentType; // 文件的内容类型

    private String[] uploadFileName; // 上传文件名

这三个参数必须这样命名,因为文件上传控件默认是封装了这3个参数的,且在action里面他们应有get,set方法!

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » JAVA 把文件传到服务器.......

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情