如何在Java中設(shè)置Excel文件下載時的文件名
使用Java導(dǎo)出Excel文件時,需要在response的header中進(jìn)行設(shè)置,以改變?yōu)g覽器下載文件的文件名。以下將介紹具體的操作步驟。 代碼示例以下是一個使用Spring框架編寫的下載接口示例。通
使用Java導(dǎo)出Excel文件時,需要在response的header中進(jìn)行設(shè)置,以改變?yōu)g覽器下載文件的文件名。以下將介紹具體的操作步驟。
代碼示例
以下是一個使用Spring框架編寫的下載接口示例。通過訪問該接口,可以導(dǎo)出一個文件。請注意文件名與文件格式之間并無直接關(guān)聯(lián)。
```java
package ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
@Controller
public class HomeController {
@RequestMapping(value "download", method )
public void download(HttpSession session, HttpServletRequest request, HttpServletResponse response) throws IOException {
Path path ("D:搜狗高速下載");
byte[] bytes (path);
String fileName "文件名wenjianming";
if (("user-agent").toLowerCase().indexOf("firefox") > -1) {
// 火狐瀏覽器會自行對URL進(jìn)行一次URL轉(zhuǎn)碼,需要單獨處理
("Content-Disposition", "attachment;filename" new String(("utf-8"), "ISO-8859-1"));
} else {
("Content-Disposition", "attachment;filename" URLEncoder.encode(fileName,"utf-8"));
}
().write(bytes);
}
}
```
測試文件示例
測試時可以簡單命名文件為“文件名wenjianming.csv”,其中包含英文和中文字符,以驗證各種瀏覽器是否能正確顯示。
處理中文文件名
在設(shè)置header時不能直接包含中文字符,一般瀏覽器需使用`URLEncoder.encode`方法進(jìn)行編碼。而對于火狐瀏覽器,則需要進(jìn)行特殊處理,將文件名轉(zhuǎn)換成`ISO-8859-1`編碼格式。