Je suis en train de faire un programme qui télécharge une image à un serveur Web qui accepte multipart fichiers-upload.demande post-télécharger le fichier multipart de java
Plus précisément, je veux faire une demande http POST à 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 du type POST. La réponse que je reçois ressemble à un GET.
(Et je veux le faire sans libs tiers)
MISE À JOUR: code non travail va ici (pas d'erreur, 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);
}
S'il vous plaît envoyer votre code, sinon on ne peut guère vous aider ... –
Code Okay ajouté – Martin
:) Je ne sais pas J'ai le temps de passer à travers tout ça en ce moment, mais j'ai déjà posté des réponses avec des exemples de code de travail, vous pouvez aussi le trouver utile: [ici] (http://stackoverflow.com/questions/2469451/upload- fichiers avec java/2469587 # 2469587) et un suivi [ici] (http://stackoverflow.com/questions/2477449/simple-stream-read-write-question-in-java/2478127#2478127). Pour garder tout le verbosité vers le bas et la facilité tout le travail, je vous recommande vivement d'aller de l'avant avec [Apache HttpComponents HttpClient] (http://hc.apache.org/httpcomponents-client/index.html). – BalusC