0
現狀:我試圖創建一個JSF app
(門戶),它應該包含鏈接到Excel存儲映射爲所有用戶的公共網絡驅動器G:
上的文件(xls
,xlt
)在我們公司。主要目標是統一對這些文件的訪問權限,並將工作保存到用戶在G驅動器上的某處搜索報告。我希望這很清楚..?JSF應用程序:打開文件,而不是下載
我正在使用以下servlet來打開文件。問題是,它不只是開了,但通過瀏覽器下載,並在此之後,打開:
@WebServlet(name="fileHandler", urlPatterns={"/fileHandler/*"})
public class FileServlet extends HttpServlet
{
private static final int DEFAULT_BUFFER_SIZE = 10240; // 10KB.
private String filePath;
public void init() throws ServletException {
this.filePath = "c:\\Export";
System.out.println("fileServlet initialized: " + this.filePath);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)
{
String requestedFile = request.getPathInfo();
File file = new File(filePath, URLDecoder.decode(requestedFile, "UTF-8"));
String contentType = getServletContext().getMimeType(file.getName());
response.reset();
response.setBufferSize(DEFAULT_BUFFER_SIZE);
response.setContentType(contentType);
response.setHeader("Content-Length", String.valueOf(file.length()));
response.setHeader("Content-Disposition", "attachment; filename=\"" + file.getName() + "\"");
BufferedInputStream input = null;
BufferedOutputStream output = null;
try {
input = new BufferedInputStream(new FileInputStream(file), DEFAULT_BUFFER_SIZE);
output = new BufferedOutputStream(response.getOutputStream(), DEFAULT_BUFFER_SIZE);
byte[] buffer = new byte[DEFAULT_BUFFER_SIZE];
int length;
while ((length = input.read(buffer)) > 0) {
output.write(buffer, 0, length);
}
} finally {
close(output);
close(input);
}
}
private static void close(Closeable resource) {
if (resource != null) resource.close();
}
}
如何剛剛啓動相應的應用程序(如Excel
,Word
等),點擊鏈接(絕對文件路徑)並在其原始位置打開文件?
更新:我試圖使用<a>
標籤:
<a href="/G:/file.xls">File</a> // various "/" "\" "\\" combinations
<a href="file:///G:/file.xls">File</a>
但它不工作:
type Status report
message /G:/file.xls
description The requested resource is not available.
您無法在遠程Web服務器上打開文件,就像它在本地計算機上一樣。如果服務器是本地機器,那麼使用'file://'URL。從瀏覽器打開文件,複製並粘貼地址欄中的網址,然後將其粘貼到鏈接的「href」屬性中。 –
謝謝。它從共享的G:驅動器打開,這對服務器和域中的用戶都是相同的。我已經嘗試了你的建議,但我不知道如何。此路徑在瀏覽器中工作'file:/// G:/ test.pdf',但不是這樣:'file' – gaffcz
它從'html'文件,但不是來自JSF應用程序:( – gaffcz