2017-10-13 3 views
0

J'essaie de télécharger des fichiers de différents types MIME vers AWS S3 en utilisant l'URL prédéfinie. Je suis en mesure de voir le document sur S3 mais le contenu est inapproprié. C'est soit 0 octets ou moins que la taille attendue pour chaque fichier que j'essaye.Les fichiers téléchargés à l'aide de http PUT n'ont pas la taille exacte sur le serveur

Voici le code, s'il vous plaît laissez-moi savoir ce qui manque:

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

Est-ce que c'est avec le contenu ou la taille? Toute exception? – Lokesh

+0

Quel code d'état HTTP a été renvoyé? – EJP

+0

La taille du fichier est inappropriée. Par conséquent, lorsque je télécharge le fichier, il est corrompu. – Jayashree

Répondre

1

Il semble que votre détection de fin du cours d'eau est mauvaise, donc vous tronquer quand vous voyez un octet nul.

+0

A partir du fichier texte téléchargé sur le serveur, je vois que le contenu est arrêté lorsqu'il a rencontré les caractères suivants: ã ™ VJŒ/Õ +) ™ T ≤R V "Q * .I, IU≤RrvT" QJŒ , I8˙¯ + 8˙ѯ + ' a C¯ôk0 Comment puis-je m'assurer que la fin du flux est détectée lorsque la fin du fichier est atteinte? – Jayashree

+0

J'ai essayé: while ((i = bis.read())! = -1) { bos.write (i); } Cela résolu pour les fichiers texte et je suis en mesure de voir le contenu complet sur le fichier téléchargé sur le serveur. Mais les images sont toujours à 0 octets. De l'aide? – Jayashree

+0

@Jayashree Je vous suggère de retester cela. Cette réponse est correcte. – EJP