用Apache的commons-fileupload组件上传文件时,普通字段编码出错
2014-07-12 18:54
483 查看
问题现象:
在Servlet 上用 Apache 的commons-fileupload组件上传文件时,文件可以正确传输,
但Form中的普通文本字段保存到数据库中却显示为乱码(排除了数据库编码的问题)。
原因:
用jsp上传文件时,浏览器采用了另一种编码方式,即 "multipart/form-data", 与普通form不同。
这时表单中的普通文本字段可能没有按encoding进行编码(个人猜测)。
解决方法:
在servlet 中取得普通文本字段的值时指定Encoding:
// 取得Form中的所有字段
List<FileItem> list = (List<FileItem>) upload.parseRequest(request);
for (FileItem fieldItem : list) {
if(fieldItem.isFormField()){
// 普通文本字段
String fieldName = fieldItem.getFieldName();
String fieldValue = fieldItem.getString("UTF-8")
}
else {
// 文件字段
fieldItem.write(new File("filePath", "fileName"));
}
}
在Servlet 上用 Apache 的commons-fileupload组件上传文件时,文件可以正确传输,
但Form中的普通文本字段保存到数据库中却显示为乱码(排除了数据库编码的问题)。
原因:
用jsp上传文件时,浏览器采用了另一种编码方式,即 "multipart/form-data", 与普通form不同。
这时表单中的普通文本字段可能没有按encoding进行编码(个人猜测)。
解决方法:
在servlet 中取得普通文本字段的值时指定Encoding:
// 取得Form中的所有字段
List<FileItem> list = (List<FileItem>) upload.parseRequest(request);
for (FileItem fieldItem : list) {
if(fieldItem.isFormField()){
// 普通文本字段
String fieldName = fieldItem.getFieldName();
String fieldValue = fieldItem.getString("UTF-8")
}
else {
// 文件字段
fieldItem.write(new File("filePath", "fileName"));
}
}
相关文章推荐
- 使用Apache的commons-fileupload和commmons-io组件实现文件上传
- 《Java》----详解用apache的commons-fileupload组件实现文件上传
- commons-fileupload(apache开源文件上传组件)使用方式
- 利用apache-commons-fileupload写jsp上传文件
- 使用Commons-fileupload组件实现文件上传
- 使用Commons-fileupload组件实现文件上传
- 使用Commons-fileupload组件和jstl实现文件上传
- 利用commons-fileupload组件上传文件至服务器和数据库(ZT)
- 使用commons-fileupload组件上传下载文件
- apache的commons-fileupload实现文件上传,下载
- 在JSP环境中利用Commons-fileupload组件实现文件上传
- 使用commons-fileupload组件上传下载文件
- 利用apache-commons-FileUpload组件进行上传。
- commons_fileupload组件 简单文件上传
- commons-fileupload组件实现的文件基本上传
- 用commons-fileupload组件上传文件
- 利用commons-fileupload组件上传文件至服务器和数据库
- 利用apache-commons-fileupload写jsp上传文件
- 使用Commons-fileupload组件实现文件上传的注意细节
- 上传文件出错:org.apache.commons.fileupload.FileUploadBase$IOFileUploadException: Processing of multipart/form-data request failed. Stream ended unexpectedly