解決ServletFileUpload上傳檔案時,獲取上傳檔名出現中文亂碼問題
阿新 • • 發佈:2021-01-26
解決ServletFileUpload上傳檔案時,獲取上傳檔名出現中文亂碼問題
在我們使用ServletFileUpload上傳檔案時,我們通常會獲取其上傳的檔名,然而當檔名包含中文時,便可能出現亂碼.如:
而這個問題明顯屬於編碼問題,我們出現亂碼的程式碼如下:
protected void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
if(ServletFileUpload.isMultipartContent(request)){//判斷是否為多段資料
FileItemFactory firlfact = new DiskFileItemFactory();
ServletFileUpload sfu = new ServletFileUpload(firlfact);
try {
List<FileItem> list = sfu.parseRequest(request) ;
for (FileItem fileItem : list) {
if(fileItem.isFormField()){
System.out.println(fileItem.getName());
System.out.println(fileItem.getString("utf-8"));
}
else {
fileItem. write(new File("e:\\"+fileItem.getName()));
}
}
} catch (FileUploadException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}
我們可以發現,ServletFileUpload使用了request,所以我們只需要在程式碼開頭加上一句:
request.setCharacterEncoding("utf-8");
即可解決該問題.
重新部署工程之後,便不會出現亂碼問題了.