Java 使用Servlet下载文件时如何使用GWT?
我正在创建一个简单的项目,它允许我使用gwt上传和下载文件。我在下载服务器上的文件时遇到问题 对于文件上传,我使用并遵循那里的说明。我的文件存储在网站容器外的服务器上(硬盘上) 现在,在下载文件时,我希望用户按下下载按钮,当前选择的任何项目都将下载。我真的不知道该怎么做 我知道我需要一个下载servletJava 使用Servlet下载文件时如何使用GWT?,java,gwt,servlets,download,Java,Gwt,Servlets,Download,我正在创建一个简单的项目,它允许我使用gwt上传和下载文件。我在下载服务器上的文件时遇到问题 对于文件上传,我使用并遵循那里的说明。我的文件存储在网站容器外的服务器上(硬盘上) 现在,在下载文件时,我希望用户按下下载按钮,当前选择的任何项目都将下载。我真的不知道该怎么做 我知道我需要一个下载servlet public class DownloadAttachmentServlet extends HttpServlet { @Override protected void doPost(Ht
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);
}
}
上面是一个简单的小部件,它将提供一个面板,允许根据文件名下载文件
正如您在上面看到的,我不知道如何才能下载该文件
有没有人可以为我指出正确的方向?在客户端,只需创建一个常规的
标记。如果要动态创建锚定类,可以使用该类。当用户单击链接时,浏览器将自动下载文件。好的,这样我就可以使用锚,但是我如何将其链接到下载servlet,以及如何将文件名作为字符串传递到servlet?每个servlet都有一个url(您在web.xml中指定的url)。您只需要将该URL放入href
属性中。此外,文件名可以作为URL参数传递,如?filename=abcd.txt&otherParam=otherValue
。在servlet中,您可以通过调用request.getParameter(“filename”)
来获取文件名。我可以看看您使用的web.xml以及传递给锚定的参数吗。