2017-10-13 149 views
0

我正嘗試使用預先設置的URL將不同MIME類型的文件上傳到AWS S3。我能夠在S3上看到文檔,但內容不恰當。它要麼是0字節,要麼小於我嘗試的每個文件的預期大小。使用http PUT上傳的文件在服務器上的大小不正確

下面是代碼,請讓我知道什麼是缺少:

public static void main(String[] args) { 

    URLConnection urlconnection = null; 

    try { 
     File file = new File(File_Path); 

     if (isEncoded == "false") { 
      URL obj = new URL(Upload_Url); 
      urlconnection = obj.openConnection(); 
     } else { 
      try { 
       URI uri = new URI(Upload_Url); 
       URL url = uri.toURL(); 
       urlconnection = url.openConnection(); 
      } catch (URISyntaxException e) { 
       e.printStackTrace(); 
      } 
     } 
     urlconnection.setDoOutput(true); 
     urlconnection.setDoInput(true); 

     if (urlconnection instanceof HttpURLConnection) { 
      ((HttpURLConnection) urlconnection).setRequestMethod("PUT"); 
      ((HttpURLConnection) urlconnection).setRequestProperty("Content-Type", Content_Type); 
      ((HttpURLConnection) urlconnection).connect(); 
     } 

     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); 
     } 
     bis.close(); 
     bos.close(); 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
+0

它是否符合內容或尺寸?有什麼異常? – Lokesh

+0

什麼HTTP狀態碼被返回? – EJP

+0

文件大小不合適。因此,當我下載文件時,它已損壞。 – Jayashree

回答

1

似乎結束流的檢測是錯誤的,因此你當你看到一個空字節截斷。

+0

從上傳到服務器的文本文件中,我看到內容在遇到下面的字符時就停止了:'T * R V「Q * .I,IU≤RrvT」QJŒ ,I8˙¯+ 8Ñ+' a Côô0 如何確保在到達文件結尾時檢測到流結束? – Jayashree

+0

我試過:while((i = bis.read())!= -1)bos.write(i); }這解決了文本文件,我能夠看到文件上傳到服務器上的全部內容。但圖像仍然在0字節。任何幫助? – Jayashree

+0

@Jayashree我建議你重新測試一下。這個答案是正確的。 – EJP

相關問題