2 votes

Valeur trop grande pour le type de données défini Android

Je reçois un java.io.IOException: Value too large for defined data type lors du téléchargement d'un gros fichier de près de 2,1 Go vers un serveur. Mon code est le suivant :

     URL oUrl = new URL(servierUrl);
     HttpURLConnection  connection = (HttpURLConnection) oUrl.openConnection();
       connection.setDoOutput(true);
       connection.setRequestMethod("POST");
       connection.setRequestProperty("Connection", "Keep-Alive");
       connection.setRequestProperty("Content-Type", "multipart/form-       data");
       connection.setRequestProperty("Content-Length", String.valueOf(nChunkSize));
       connection.setConnectTimeout(1800000); 

     InputStream oFileInputStream = new FileInputStream(new File(sFilePath));

     OutputStream outputStream = new DataOutputStream(connection.getOutputStream());
     .
     .
     . // here I'm dividing the stream chunks, every chunk 5Mb and uploading the chuck  to server 
          but in the chunk #410 (5Mb * 410) it cause an exception return the exception as I mentioned above.
          before that every chunk I upload it success
     .
     .

Toute aide est la bienvenue.

0voto

Gabe Sechan Points 23732

A mon avis, quelque chose utilise un int pour contenir la longueur du fichier. Cela déborde à 2^31-1, soit environ 2 milliards d'octets. Cela ressemble à un problème dans la bibliothèque http ou dans le flux de sortie. Vous allez devoir soit décomposer ce fichier, soit remplacer le composant défaillant par un autre qui fonctionne. Il est possible de déterminer quel composant est défaillant en regardant plus haut dans la trace de la pile et en voyant d'où vient le crash.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X