Hallöchen,
ich benutze als client den HttpClient von jakarta.commens und als server ein servlet welches auf einem tomcat5 läuft.
Ich möchte Dateien in beide Richtungen austauschen.
Das handshake funktioniert und strings übertragen funktioniert auch in beide Richtungen.
Als erstes interessiere ich mich für den upload.
Dazu verwende ich auf dem client die FilePart Klasse um mehrere Files an den Request
zu übergeben.
Auf dem Server möchte ich dann die FileUpload Klassen verwenden.
Frage :
Kann ich den upload so realisieren, oder ist mein Ansatz falsch (kombination von filePart und uploadFile) ?
// CLIENT
// SERVER
danke,
bastian
ich benutze als client den HttpClient von jakarta.commens und als server ein servlet welches auf einem tomcat5 läuft.
Ich möchte Dateien in beide Richtungen austauschen.
Das handshake funktioniert und strings übertragen funktioniert auch in beide Richtungen.
Als erstes interessiere ich mich für den upload.
Dazu verwende ich auf dem client die FilePart Klasse um mehrere Files an den Request
zu übergeben.
Auf dem Server möchte ich dann die FileUpload Klassen verwenden.
Frage :
Kann ich den upload so realisieren, oder ist mein Ansatz falsch (kombination von filePart und uploadFile) ?
// CLIENT
Code:
public PostMethod postFileUpload(String key, String value, File[] file)
throws ApplicationException {
PostMethod postMethod = new PostMethod(UtilDef.SERVERURL);
postMethod.getParams().setParameter(
HttpMethodParams.RETRY_HANDLER,
new DefaultHttpMethodRetryHandler(UtilDef.METHODRETRY, false));
int statusCode;
try {
Part[] parts = new Part[file.length + 1];
parts[0] = new StringPart(key, value);
for (int i = 1; i <= file.length; i++) {
parts[i] = new FilePart(file[i].getName(), file[i]);
}
postMethod.setRequestEntity(
new MultipartRequestEntity(parts, postMethod.getParams()));
statusCode = client.executeMethod(postMethod);
if (statusCode != HttpStatus.SC_OK) {
throw new ApplicationException(statusCode);
}
} catch (HttpException exc) {
throw new ApplicationException(ExceptionDef.EXC_HTTP, exc);
} catch (IOException exc) {
throw new ApplicationException(ExceptionDef.EXC_IO, exc);
} // DO NOT postMethod.releaseConnection() before response got data.
return postMethod;
}
// SERVER
Code:
// ...
case MessageDef.UPLOAD_FILES:
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload fu = new ServletFileUpload(factory);
List items;
try {
items = fu.parseRequest(req);
Iterator iter = items.iterator();
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();
//...
break;
danke,
bastian