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?
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
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)