Я создаю простой проект, который позволит мне загружать, и загружать файлы с помощью gwt. я испытываю затруднения из-за загрузки файлов, которые находятся на моем сервере.
Поскольку файл загружает, я использовал http://code.google.com/p/gwtupload/ и следовал инструкциям там. Мой файл хранится на сервере за пределами контейнера веб-сайта (на жестком диске),
Теперь когда дело доходит до загрузки файла, я хочу, чтобы пользователь нажал кнопку загрузки и независимо от того, что объект в настоящее время выбирается, загрузит. я действительно не знаю, как это будет сделано
я знаю, что мне нужен сервлет загрузки
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();
}
}
в настоящий момент я просто передам строку имени файла для получения файла для тестирования
теперь я потерян в том, что сделать на стороне клиента, у меня есть простое
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);
}
}
выше простой виджет, который предоставит панель, которая будет допускать загрузку файла на основе имени файла
как Вы видите выше, я не знаю, что сделать, чтобы смочь загрузить файл
есть ли кто-либо, который может указать на меня в правильном направлении?
На стороне клиента просто создайте обычный тег
. Вы можете использовать класс Anchor
, если хотите создать его динамически. Когда пользователь щелкает ссылку, браузер автоматически загружает файл.