我目前能够将服务器目录中的文件提供给HTML前端。但是,我目前只能下载这些文件,或者在页面上完全打开。我想要做的是将它们嵌入我的网页。
如果文件存储在网络目录中但是使用了embed标记,我可以很容易地做到这一点。
目前我正在做一些事情:
Servlet文件:
@MultipartConfig
@WebServlet
public class FileServlet extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
File file = new File("filePath");
String mimeType = getServletContext().getMimeType(file.getName());
response.setHeader("Content-Type", mimeType);
response.setHeader("Content-Length", String.valueOf(file.length()));
response.setHeader("Content-Disposition", "embed; filename=\"fileName.pdf\"");
Files.copy(file.toPath(), response.getOutputStream());
}
}
JSP:
<form action="getFile" method="post" id="fileForm">
<input type="hidden" name="fileName" value="<%out.print(cvKey);%>/<%out.print(name);%>.pdf"/>
</form>
在页面加载时自动提交表单。
我一直在尝试将嵌入式标记的源代码设置为Servlet文件的输出,但我尝试过的任何内容都不是我想要的。
任何帮助都会很棒!!
更新:
我还尝试了一些其他的东西;包括使用iframe:
<iframe name="frame" width="500" height="300"></iframe>
然后将表单的目标设置为该帧的名称。这仍然无法正常工作,我只是得到一个空框架并下载文件:/。
编辑:
尝试使用带有直接路径的路径的embed标记失败:
我的代码:
<embed id="embeddedPDF" src="/home/user/resources/candidate.pdf" width="1000" height="1000" type='application/pdf'></embed>
错误:
The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.