2011-06-28 50 views
3

我有一些從頭開始生成圖像的java代碼。在「on the fly」中指定圖像名稱java圖像生成

我也有一個servlet,根據一些參數(fyi,它是QR碼生成)提供圖像。

我想爲這張圖片指定一個名字,以防有人右鍵點擊並保存。瀏覽器當前將相對URL作爲名稱(即生成),並且沒有擴展名。

你有什麼想法嗎?

謝謝, Alexis。

回答

1

使用漂亮的網址編輯圖像。
我想你現在正在做的一樣

generateServlet?product=27&query=5 

的東西,相反,它映射到

images/qr/product27_q5.png 

這種方式,瀏覽器只能看到漂亮的url和建議,作爲一個文件名。它也隱藏了你的實現。

只需將您的servlet映射到images/qr/*,然後使用正則表達式從請求的路徑中提取實際參數。

你甚至可以產生不同的圖像類型取決於提供的擴展:)

+1

也可以這樣做。 'img/viewcover.jpg?selected = 22233'viewcover.jpg映射到servlet。 – zawhtut

+0

這是一種可行的方式,但我一直在考慮一些響應標題,或者更好:imageio metadatas :)。無論如何,我會考慮實施它。 –

+0

@zawhtut:是的,但下載後所有圖片都會得到名稱viewcover.jpg。你需要一個不同的名稱,甚至可能對用戶有一定的描述性。 –

1
resp.setContentType("image/jpg"); 
    resp.setHeader("Content-Disposition", "attachment; filename=\"" + your_filename + "\""); 
+0

+1。注意名稱:)只使用ascii-7或查找有關如何將文件名編碼到標題中的參考。 – helios

+1

這適用於下載圖像,在我的情況下,它顯示在 HTML標記中。我也嘗試過「Content-Disposition」,「inline; –