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

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

Aceitar