Erro usando HttpURLConnection

14/07/2018

0

Senhores, boa tarde. Fiz um aplicativo em Android que, entre outras coisas, faz upload. Quando o arquivo não é txt, tudo funciona bem. Mas quando upload um arquivo txt, o conteúdo é alterado.

String headerValue = String.format("Content-Disposition: form-data; name=\\"%s\\"", sourceFileUri);
headerValue = headerValue + lineEnd;

Esta string headerValue é incluída no arquivo enviado, alterando-o. E em consequência inviabilizando o seu uso.

Eu uso o código

---------------------------------------------------------
HttpURLConnection conn = null;
DataOutputStream dos = null;
String lineEnd = "\\r\\n";
String twoHyphens = "--";
String boundary = "*****";
int bytesRead, bytesAvailable, bufferSize;
byte[] buffer;
int maxBufferSize = 1 * 1024 * 1024;

File sourceFile = new File(sourceFileUri);

// open a URL connection to the Servlet
fileInputStream = new FileInputStream(sourceFile);
URL url = new URL(upLoadServerUri + sourceFileUri);
//Log.e("Upload file to server", "sourceFileUri: " + upLoadServerUri + sourceFileUri);
// Open a HTTP connection to the URL
conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(15000);
conn.setConnectTimeout(15000);
conn.setDoInput(true); // Allow Inputs
conn.setDoOutput(true); // Allow Outputs
conn.setUseCaches(false); // Don't use a Cached Copy
conn.setRequestMethod("POST");

conn.setRequestProperty("Connection", "Keep-Alive");
conn.setRequestProperty("ENCTYPE", "multipart/form-data");
conn.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary);
conn.setRequestProperty("uploaded_file", fileName);
dos = new DataOutputStream(conn.getOutputStream());

dos.writeBytes(twoHyphens + boundary + lineEnd);

String headerValue = String.format("Content-Disposition: form-data; name=\\"%s\\"", sourceFileUri);
headerValue = headerValue + lineEnd;

//String headerValue = String.format("attachment; filename=\\"%s\\"", fDownload.getName());
//dos.writeBytes("Content-Disposition: form-data; name='uploaded_file';filename='" + fileName + "'" + lineEnd);
dos.writeBytes(headerValue);

dos.writeBytes(lineEnd);

------------------------------------------------------------------------

Pergunto:
Existe alguma forma de evitar essa inserção no arquivo original?
Carlos Silva

Carlos Silva

Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar