注意最后写入文件的时候编码要为gb2312.
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload servletFileUpload = new ServletFileUpload(factory);
List<FileItem> fileItems = servletFileUpload.parseRequest(request);
for (FileItem fileItem : fileItems) {
if (fileItem.isFormField()) {
String FieldName = fileItem.getFieldName();
// getName()返回的是文件名字普通域没有文件返回NULL
String Content = fileItem.getString("UTF-8");
request.setAttribute(FieldName, Content);
} else {
String nm = fileItem.getName().substring(
fileItem.getName().lastIndexOf("\\") + 1);
File file = new File(path);
if (!file.exists()) {
file.mkdirs();// 文件夹找不到,创建文件夹
}
File mkr = new File(path, nm);
if (nm.indexOf(".html") > 0) {
String html = getReadToString(
fileItem.getInputStream(), "gb2312");
StringBuilder sb = new StringBuilder();
try {
Parser parser = new Parser();
parser.setInputHTML(html);
parser.setEncoding("gb2312");
NodeIterator it = parser.elements();
while (it.hasMoreNodes()) {
Node node = it.nextNode();
node.accept(new NodeVisitor() {
public void visitTag(Tag tag) {
if (tag instanceof LinkTag) {
LinkTag link = (LinkTag) tag;
link.setAttribute("target",
"_blank");
}
}
});
sb.append(node.toHtml());
}
} catch (Exception e) {
e.printStackTrace();
}
// FileWriter fw = new FileWriter(mkr);
// fw.write(sb.toString());
// fw.close();
Writer writer = new BufferedWriter(
new OutputStreamWriter(
new FileOutputStream(mkr), "gb2312"));
writer.write(sb.toString());
writer.flush();
writer.close();
} else {
fileItem.write(mkr);
}
}
}