Próbuję dowiedzieć się, jak przesłać jeden plik przy użyciu widgetu FileWpload GWTs. Używam GWT i Google AppEngine z Javą, ale chciałbym przesłać plik na mój własny serwer Linux. Mam następujący kod, ale teraz już nie mogę dowiedzieć się, jak przesłać swój plik do serwera Google AppServer i zapisać go na inny serwer:Przesyłanie pliku podstawowego w GWT
public class FileUploader{
private ControlPanel cp;
private FormPanel form = new FormPanel();
private FileUpload fu = new FileUpload();
public FileUploader(ControlPanel cp) {
this.cp = cp;
this.cp.setPrimaryArea(getFileUploaderWidget());
}
@SuppressWarnings("deprecation")
public Widget getFileUploaderWidget() {
form.setEncoding(FormPanel.ENCODING_MULTIPART);
form.setMethod(FormPanel.METHOD_POST);
// form.setAction(/* WHAT SHOULD I PUT HERE */);
VerticalPanel holder = new VerticalPanel();
fu.setName("upload");
holder.add(fu);
holder.add(new Button("Submit", new ClickHandler() {
public void onClick(ClickEvent event) {
GWT.log("You selected: " + fu.getFilename(), null);
form.submit();
}
}));
form.addSubmitHandler(new FormPanel.SubmitHandler() {
public void onSubmit(SubmitEvent event) {
if (!"".equalsIgnoreCase(fu.getFilename())) {
GWT.log("UPLOADING FILE????", null);
// NOW WHAT????
}
else{
event.cancel(); // cancel the event
}
}
});
form.addSubmitCompleteHandler(new FormPanel.SubmitCompleteHandler() {
public void onSubmitComplete(SubmitCompleteEvent event) {
Window.alert(event.getResults());
}
});
form.add(holder);
return form;
}
}
Teraz, co muszę zrobić? Co trzeba zrobić, aby umieścić w web.xml i jak mogę napisać aplet, więc mogę zapisać plik i powrócić URL danego obiektu (jeśli to możliwe)
mam dokładny jak OP: Projekt jest hostowany na GAE i chcę przesłać plik na mój własny serwer internetowy Linux. OP wybrał odpowiedź jako najlepszą odpowiedź, więc myślę, że pomogło mu to w pytaniu, ale nie wiem, gdzie umieścić klasę FileUpload, czy jest ona w GAE wraz z innymi plikami projektu? A co z serwerem Linux? Jak otrzyma pliki? Gdzie jest określony adres? A nazwa pliku? Jestem zdezorientowany tym kawałkiem kodu. –
Czy 10 MiB "10 * 1024 * 1024", a nie "10 * (1024 * 2)", czy też "megs" to alternatywna nazwa dla 2 KiB? –
10 * (1024 * 2) to 20Kb, ale nie 10Mb – Antonio