过滤器,要不就用
public static String toChinese(String str) {
try{
if(str==null){
return null;
}
else{
str=new String(str.getBytes("ISO8859_1"),"GBK");
return str;
}
}
catch(Exception e){
return null;
}
}
这样的转回中文
public static String toChinese(String str) {
try{
if(str==null){
return null;
}
else{
str=new String(str.getBytes("ISO8859_1"),"GBK");
return str;
}
}
catch(Exception e){
return null;
}
}
这样的转回中文
解决方案 »
- cs结构中的frame操作
- 使用javabean+Dao类+一个index的jsp页面,从数据库里查询几行数据显示到浏览器index页面上
- 请求Connection Leak的例子!
- hibernate方面?
- java有没有开源的断点续传组件
- 会javamail的高手请进来帮帮我
- 送分的问题!大家积极参加
- linux tomcat 远程部署web项目问题 ContextLoaderListener
- 在使用j2eesdk1.4自带deploytool的时候,怎样设置JNDI Name?在线等!
- java里的什么数据类型可以传到SQLServer数据库里进行时间比较?
- java登录文件系统错误
- 请问J2EE(Java)中如何调用CORBA组件?
package com.zy.oa.util;import java.io.*;
import java.util.*;
import java.sql.*;import javax.servlet.http.HttpServletRequest;
import javax.servlet.ServletInputStream;
import javax.servlet.ServletException;/**
* 该类提供文件上传服务
*/public class UpLoad{ private static String newline = "";
private String uploadDirectory = "D:/jakarta-tomcat-4.0.1/webapps/oa/upload";
private String ContentType = "";
private String CharacterEncoding = "";
private String strFileName = "";
private long iFileSize = 0;
private Hashtable values = null;
private Vector fileNames = null;
private Vector originalFileNames = null;
private Vector existFileNames = null;
private String fileText = null;
private String originalFileText = null;
public UpLoad(){
values = new Hashtable();
fileNames = new Vector();
originalFileNames = new Vector();
AttachmentManage manageFileNames = new AttachmentManage();
Global global = new Global();
try {
uploadDirectory = global.getVarValue(Global.UpLoadDir);
} catch (Exception e) {
e.printStackTrace();
}
} private String getFileName(String s){ int i = s.lastIndexOf("\\");
if(i < 0 || i >= s.length() - 1){
i = s.lastIndexOf("/");
if(i < 0 || i >= s.length() - 1)
return s;
}
strFileName = s.substring(i + 1);
// Logger.log(strFileName);
return s.substring(i + 1);
} public String getUploadFileName(){
return strFileName;
} public long getFileSize(){
return iFileSize;
} public void setUploadDirectory(String s){
uploadDirectory = s;
Logger.log("上传路径是:" + s);
} public void setContentType(String s){
ContentType = s;
int j;
if((j = ContentType.indexOf("boundary=")) != -1){
ContentType = ContentType.substring(j + 9);
ContentType = "--" + ContentType;
}
} public void setCharacterEncoding(String s){
CharacterEncoding = s;
} private String getName(String src){
int i = src.indexOf("name=\"");
int j = src.lastIndexOf("\"");
return new String(src.substring(i + 6, j));
} private String getValue(String src){
return null;
} public Hashtable getValues(){
return this.values;
}
public Vector getFileNames(){
return this.fileNames;
} public void uploadFile( HttpServletRequest req) throws ServletException,
IOException{
//Logger.log(req.getCharacterEncoding());
//Logger.log(req.getContentType()); setCharacterEncoding(req.getCharacterEncoding());
setContentType(req.getContentType());
uploadFile(req.getInputStream());
} private void uploadFile( ServletInputStream servletinputstream) throws
ServletException, IOException{ AttachmentManage manageFileNames = new AttachmentManage();
existFileNames = manageFileNames.getNameList(this.uploadDirectory);
String filename = null;
byte Linebyte[] = new byte[4096];
int ai[] = new int[1];
String line= null;
String fileTextTemp = "";
// while((line=readLine(Linebyte, ai, servletinputstream, CharacterEncoding))!=null)
// {Logger.log(line);} do{
// 得到文件名
//如果最后读出的一行包括文件名则直接对这行处理
if (line != null && line.indexOf("filename=") >= 0){
// String aline = "";
// aline = new String(line);
int j = line.indexOf("name=");
if(j>=0){
line = line.substring(j + 6);
fileTextTemp = line.substring(0,line.indexOf("\""));
}
int i = line.indexOf("filename=");
if(i >= 0){
line = line.substring(i + 10);
if((i = line.indexOf("\"")) > 0)
line = line.substring(0, i);
break;
}
// int j = aline.indexOf("name="); }
else{
//读出的最后一行不包括文件名,则继续读取
while((line = readLine(Linebyte, ai, servletinputstream,
CharacterEncoding)) != null){
// Logger.log(line);
//得到文件的name域
int j = line.indexOf("name=");
if(j>=0){
line = line.substring(j + 6);
fileTextTemp = line.substring(0,line.indexOf("\""));
}
if(i >= 0){
line = line.substring(i + 10);
if((i = line.indexOf("\"")) > 0)
line = line.substring(0, i);
break;
}
}
}
//filename 为文件的路径 和文件名
filename = line;
//得到文件名 如果文件名正常 则开始读入上载文件
if(filename != null && (filename.indexOf("\"") == -1)){
int Conflict_ID = 0; filename = getFileName(filename);
//保存原始信息
if(!fileTextTemp.equals("text"))
this.originalFileNames.add(new String(filename));
else
this.originalFileText = filename; //如果附件列表中 则改名防止冲突
if(existFileNames.contains(filename)){
try{
Conflict_ID = KeyGenerator.getNewId("Conflict_ID");
}catch(SQLException e){e.printStackTrace();}
filename = Conflict_ID + "_" + filename;
} // 如果文件列表中不包含该文件 并且不是正文,则加入
if(!this.fileNames.contains(filename) && (!fileTextTemp.equals("text")))
this.fileNames.add(new String(filename));
else//正文的名字
fileText = new String(filename);
String sContentType = readLine(Linebyte, ai, servletinputstream,
CharacterEncoding);
if (sContentType != null)
if(sContentType.indexOf("Content-Type") >= 0)
readLine(Linebyte, ai, servletinputstream, CharacterEncoding); File file = null;
FileOutputStream fileoutputstream = null; try{
file = new File(uploadDirectory, filename);
fileoutputstream = new FileOutputStream(file);
}catch(Exception e){e.printStackTrace();} String tempStr = readLine(Linebyte, ai, servletinputstream,
CharacterEncoding);
// Logger.log(tempStr);
// 读上载文件
while((tempStr != null)&&(tempStr.indexOf(this.ContentType) == -1)){
// Logger.log(tempStr);
fileoutputstream.write(Linebyte, 0, ai[0]);
tempStr = readLine(Linebyte, ai, servletinputstream,
CharacterEncoding);
line = tempStr;
}//end while
// fileoutputstream.flush();
fileoutputstream.close();
}//end if
// System.out.println("line:" + line); }while(line != null);
} private String readLine(byte Linebyte[], int ai[], ServletInputStream
servletinputstream, String CharacterEncoding){
try{
ai[0] = servletinputstream.readLine(Linebyte, 0, Linebyte.length);
if(ai[0] == -1)
return null;
}catch(IOException _ex){
_ex.printStackTrace();
return null;
} try{
if(CharacterEncoding == null){
//用缺省的编码方式把给定的byte数组转换为字符串
return new String(Linebyte, 0, ai[0]);
}else{
//用给定的编码方式把给定的byte数组转换为字符串
return new String(Linebyte, 0, ai[0], CharacterEncoding);
}
}catch(Exception _ex){
_ex.printStackTrace();
return null;
}
}
public String getUploadDirectory() {
return uploadDirectory;
}
public String getFileText() {
return fileText;
}
public Vector getOriginalFileNames() {
return originalFileNames;
}
public String getOriginalFileText() {
return originalFileText;
}
}
如果是中文文件名变乱码的解决之道就是:FormFile file = form.getUploadFile();
String fileName = new String(file.getFileName().getBytes(),"UTF-8");http://www.javayou.com
能给份文件上传的代码吗?要你做的,谢谢
[email protected]