2010-08-02 13 views
3

我正在用Java編寫一個桌面應用程序,使用HTTP PUT將文件上傳到IIS服務器上的文件夾。使用HTTP將文件上傳到Java中

URLConnection urlconnection=null; 
    try{ 
    File file = new File("C:/test.txt"); 
    URL url = new URL("http://192.168.5.27/Test/test.txt"); 
    urlconnection = url.openConnection(); 
    urlconnection.setDoOutput(true); 
    urlconnection.setDoInput(true); 

    if (urlconnection instanceof HttpURLConnection) { 
    try { 
    ((HttpURLConnection)urlconnection).setRequestMethod("PUT"); 
    ((HttpURLConnection)urlconnection).setRequestProperty("Content-type", "text/html"); 
    ((HttpURLConnection)urlconnection).connect(); 


    } catch (ProtocolException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
    } 
    } 


    BufferedOutputStream bos = new BufferedOutputStream(urlconnection 
    .getOutputStream()); 
    BufferedInputStream bis = new BufferedInputStream(new FileInputStream(
    file)); 
    int i; 
    // read byte by byte until end of stream 
    while ((i = bis.read()) >0) { 
    bos.write(i); 
    } 
    System.out.println(((HttpURLConnection)urlconnection).getResponseMessage()); 
    } 
    catch(Exception e) 
    { 
    e.printStackTrace(); 
    } 
    try { 

    InputStream inputStream; 
    int responseCode=((HttpURLConnection)urlconnection).getResponseCode(); 
    if ((responseCode>= 200) &&(responseCode<=202)) { 
    inputStream = ((HttpURLConnection)urlconnection).getInputStream(); 
    int j; 
    while ((j = inputStream.read()) >0) { 
    System.out.println(j); 
    } 

    } else { 
    inputStream = ((HttpURLConnection)urlconnection).getErrorStream(); 
    } 
    ((HttpURLConnection)urlconnection).disconnect(); 

    } catch (IOException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
    } 

該程序在目標文件夾(Test)上創建一個空文件。內容不寫入文件。

這個程序有什麼問題?

+1

我想通過調試服務器端啓動 - 實際上是字節收到? – Bozho 2010-08-02 10:24:10

+0

我寫的第一種不產生任何內容的操作方法是刷新我所有的流:D寫入後嘗試bos.flush()。 – f1sh 2010-08-02 10:31:36

回答

5

在您完成編寫BufferedOutputStream的循環後,請致電bos.close()。在關閉流之前刷新緩衝的數據。

1

可能的錯誤:bis.read()可以返回一個有效的0。你需要改變,而條件> = 0