Tworzę prosty projekt, który pozwoli mi przesyłać i pobierać pliki przy użyciu gwt. Mam problem z pobieraniem plików znajdujących się na moim serwerze.Jak korzystać z GWT podczas pobierania plików za pomocą serwletu?
Do przesłania pliku użyłem http://code.google.com/p/gwtupload/ i postępowałem zgodnie z instrukcjami tam. Mój plik jest przechowywany na serwerze poza kontenerem witryny (na dysku twardym),
Teraz, gdy chodzi o pobieranie pliku, chcę, aby użytkownik nacisnął przycisk pobierania i cokolwiek jest aktualnie wybrane pobieranie. I naprawdę nie wiem jak to zrobić
wiem muszę pobrać aplet
public class DownloadAttachmentServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
super.doGet(req, resp);
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
String fileName = (String) req.getSession().getAttribute("fileName");
YFUser user = (YFUser) req.getSession().getAttribute(TestServiceImpl.SESSION_USER);
if (user == null)
throw new ServletException("Invalid Session");
InputStream in = null;
OutputStream out = resp.getOutputStream();
FileInputStream fIn = new FileInputStream(fileName);
byte[] buffer = new byte[4096];
int length;
while ((length = in.read(buffer)) > 0){
out.write(buffer, 0, length);
}
in.close();
out.flush();
}
}
do chwili, kiedy będzie po prostu przekazać ciąg nazwę, aby pobrać plik do testowania
teraz jestem utracone, co zrobić po stronie klienta, mam proste
public class DownloadFilePanel extends Composite {
public DownloadFilePanel(final YFUser user , final String fileName){
final Element downloadIframe = RootPanel.get("__download").getElement();
VerticalPanel content = new VerticalPanel();
content.add(new Label("Download For this File : " + fileName));
Button button = new Button("Download");
button.addClickHandler(new ClickHandler(){
@Override
public void onClick(ClickEvent event) {
// i do not know what to do here
});
content.add(button);
initWidget(content);
}
}
powyżej jest prosty widget, który dostarczy panel, który pozwoli na pobranie pliku w oparciu o Nazwa pliku
jak widać powyżej, nie wiem, co zrobić, aby móc pobrać plik
jest jakiś jeden, który może wskazać mi w dobrym kierunku?
OK, więc mogę użyć kotwicy, ale w jaki sposób powinienem połączyć to z serwletem pobierania i jak przekazać nazwę pliku jako ciąg do serwletu? – molleman
Każdy serwlet ma adres URL (ten, który określasz w pliku web.xml). Trzeba tylko umieścić ten adres URL w atrybucie href. Ponadto nazwa pliku może być przekazana jako parametr adresu URL, taki jak "? Filename = abcd.txt i inneParam = inneValue". W swoim apletzie możesz pobrać nazwę pliku, wywołując 'request.getParameter (" filename ")' –
dziękuję, sri, działa dobrze teraz – molleman