fichier en plusieurs parties-télécharger, afficher la demande de java

Je suis en train de faire un programme qui télécharge une image à un serveur qui accepte les fichier en plusieurs parties téléchargements.

Plus spécifiquement je veux faire une requête http POST pour http://iqs.me qui envoie un fichier dans la variable "pic".

J'ai fait beaucoup d'essais, mais je ne sais pas si j'ai même été proche. La partie la plus difficile semble être d'obtenir un HttpURLConnection pour faire une requête de type POST. La réponse que je reçois dirait qu'il fait un GET.

(Et je veux le faire sans aucune tierce partie libs)

Mise à JOUR: non-utilisation de code se trouve ici (pas d'erreurs, mais ne semble pas faire un POST):

  HttpURLConnection conn = null;
BufferedReader br = null;
DataOutputStream dos = null;
DataInputStream inStream = null;
InputStream is = null;
OutputStream os = null;
boolean ret = false;
String StrMessage = "";
String exsistingFileName = "myScreenShot.png";
String lineEnd = "\r\n";
String twoHyphens = "--";
String boundary =  "*****";
int bytesRead, bytesAvailable, bufferSize;
byte[] buffer;
int maxBufferSize = 1*1024*1024;
String responseFromServer = "";
String urlString = "http://iqs.local.com/index.php";
try{
FileInputStream fileInputStream = new FileInputStream( new File(exsistingFileName) );
URL url = new URL(urlString);
conn = (HttpURLConnection) url.openConnection();
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setRequestMethod("POST");
conn.setUseCaches(false);
conn.setRequestProperty("Connection", "Keep-Alive");
conn.setRequestProperty("Content-Type", "multipart/form-data;boundary="+boundary);
dos = new DataOutputStream( conn.getOutputStream() );
dos.writeBytes(twoHyphens + boundary + lineEnd);
dos.writeBytes("Content-Disposition: form-data; name=\"pic\";" + " filename=\"" + exsistingFileName +"\"" + lineEnd);
dos.writeBytes(lineEnd);
bytesAvailable = fileInputStream.available();
bufferSize = Math.min(bytesAvailable, maxBufferSize);
buffer = new byte[bufferSize];
bytesRead = fileInputStream.read(buffer, 0, bufferSize);
while (bytesRead > 0){
dos.write(buffer, 0, bufferSize);
bytesAvailable = fileInputStream.available();
bufferSize = Math.min(bytesAvailable, maxBufferSize);
bytesRead = fileInputStream.read(buffer, 0, bufferSize);
}
dos.writeBytes(lineEnd);
dos.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);
fileInputStream.close();
dos.flush();
dos.close();
}catch (MalformedURLException ex){
System.out.println("Error:"+ex);
}catch (IOException ioe){
System.out.println("Error:"+ioe);
}
try{
inStream = new DataInputStream ( conn.getInputStream() );
String str;
while (( str = inStream.readLine()) != null){
System.out.println(str);
}
inStream.close();
}catch (IOException ioex){
System.out.println("Error: "+ioex);
}
Merci de poster votre code, sinon on ne peut guère vous aider...
Okay code ajouté 🙂
Je n'ai pas le temps d'aller à travers l'ensemble de ce droit maintenant, mais j'ai posté des réponses avec des exemples de code avant, vous trouverez peut-être utile: ici et un here. Pour garder toute la verbosité vers le bas et la facilité tout le travail, je vous recommande fortement d'aller de l'avant avec Apache HttpComponents HttpClient.
Qui a résolu, de très bons exemples. Merci!
Voulez-vous me poster une réponse, de sorte que vous pouvez l'accepter?

OriginalL'auteur Martin | 2010-04-15