Skip to content

Instantly share code, notes, and snippets.

@marekkirejczyk
Created April 24, 2012 20:06
Show Gist options
  • Save marekkirejczyk/2483263 to your computer and use it in GitHub Desktop.
Save marekkirejczyk/2483263 to your computer and use it in GitHub Desktop.
import java.io.BufferedInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import android.graphics.Bitmap;
public class MultipartUploader {
private final static String LINE_END = "\r\n";
private final static String TWO_HYPENS = "--";
private final static String BOUNDARY = "*****";
private HttpURLConnection connection = null;
private DataOutputStream outputStream = null;
private List<String> cookies = new ArrayList<String>();
public void start(String urlServer) throws IOException {
URL url = new URL(urlServer);
connection = (HttpURLConnection) url.openConnection();
connection.setDoInput(true);
connection.setDoOutput(true);
connection.setUseCaches(false);
connection.setRequestMethod("POST");
connection.setRequestProperty("Connection", "Keep-Alive");
connection.setRequestProperty("Content-Type",
"multipart/form-data;boundary=" + BOUNDARY);
for (String cookie : cookies)
connection.addRequestProperty("Cookie", cookie.split(";", 2)[0]);
outputStream = new DataOutputStream(connection.getOutputStream());
}
public String finish() throws IOException {
outputStream.flush();
outputStream.close();
cookies = connection.getHeaderFields().get("Set-Cookie");
InputStream in = new BufferedInputStream(connection.getInputStream());
return StreamUtils.toString(in);
}
public void bitmap(String name, Bitmap bitmap) throws IOException {
outputStream.writeBytes(TWO_HYPENS + BOUNDARY + LINE_END);
outputStream
.writeBytes("Content-Disposition: attachment; name=\"userfile\";filename=\""
+ name + "\"");
outputStream.writeBytes(LINE_END + LINE_END);
bitmap.compress(Bitmap.CompressFormat.JPEG, 90, outputStream);
outputStream.writeBytes(LINE_END);
outputStream.writeBytes(TWO_HYPENS + BOUNDARY + TWO_HYPENS + LINE_END);
}
public void string(String name, String value) throws IOException {
outputStream.writeBytes(TWO_HYPENS + BOUNDARY + LINE_END);
outputStream.writeBytes("Content-Disposition: form-data; name=\""
+ name + "\"" + LINE_END + LINE_END);
outputStream.writeBytes(value + LINE_END);
outputStream.writeBytes(TWO_HYPENS + BOUNDARY + LINE_END);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment