日期:2014-05-17  浏览次数:20781 次

swfupload上传,服务器为linux出现的问题(急求)
jsp的swfupload上传,再xp,2003下能正常运行,
但服务器是linux的,放linux上代码出错,
不能上传,同一个文件上传两次的话,文件能
上传成功,但文件内容变成空值,当文件名为
中文文件名时,出现乱码。
请高手帮忙修改代码,
以下是获得文件上传后的代码。
HTML code
<%@ page contentType="text/html; charset=UTF-8" language="java" import="java.sql.*" errorPage="" %>
<%@ page import="java.io.*"%> 
<%@ page import="java.util.*"%> 
<%@ page import="javax.servlet.*"%> 
<%@ page import="javax.servlet.http.*"%> 
<html> 
<head> 
<title> upFile </title> 
</head> 
<body> 
<center> 
<%
String rootPath;
DataInputStream in = null;
FileOutputStream fileOut = null;
String serverName = request.getServerName();
String realPath = request.getRealPath("/");
rootPath = realPath + "/upload/"; 
String contentType = request.getContentType(); 
try{ 
if(contentType.indexOf("multipart/form-data") >= 0){
in = new DataInputStream(request.getInputStream()); 
int formDataLength = request.getContentLength(); 
byte dataBytes[] = new byte[formDataLength]; 
int byteRead = 0; 
int totalBytesRead = 0;
while(totalBytesRead < formDataLength){
byteRead = in.read(dataBytes,totalBytesRead,formDataLength); 
totalBytesRead += byteRead; 
} 
String file = new String(dataBytes,"UTF-8");
String saveFile = file.substring(file.indexOf("filename=\"") + 10); 
saveFile = saveFile.substring(0,saveFile.indexOf("\n")); 
saveFile = saveFile.substring(saveFile.lastIndexOf("\\") + 1,saveFile.indexOf("\"")); 
int lastIndex = contentType.lastIndexOf("="); 
String boundary = contentType.substring(lastIndex + 1,contentType.length()); 
String fileName = rootPath + saveFile;
int pos; 
pos = file.indexOf("filename=\""); 
pos = file.indexOf("\n",pos) + 1; 
pos = file.indexOf("\n",pos) + 1; 
pos = file.indexOf("\n",pos) + 1; 
int boundaryLocation = file.indexOf(boundary,pos) - 4; 
int startPos = ((file.substring(0,pos)).getBytes()).length;
int endPos = ((file.substring(0,boundaryLocation)).getBytes()).length; 


File checkFile = new File(fileName); 
if(checkFile.exists()){
return;
} 
File fileDir = new File(rootPath); 
if(!fileDir.exists()){ 
fileDir.mkdirs(); 
}
fileOut = new FileOutputStream(fileName);
fileOut.write(dataBytes,startPos,(endPos - startPos)); 
fileOut.close(); 
}else{ 
String content = request.getContentType(); 
} 
}catch(Exception ex){ 
throw new ServletException(ex.getMessage()); 
} 
%> 
</center> 
</body> 
</html>


------解决方案--------------------
jf .
------解决方案--------------------
windows 里面的URL地址 和linux的不一样 你看看是不是这的 我就知道这么多了
------解决方案--------------------
最上边加一个 request.setCharacterEncoding("UTF-8")试试看
------解决方案--------------------
<%@ page contentType="text/html; charset=UTF-8" l这个是输出编码吧,pageEncoding才是页面编码,FLEX也是使用UTF8啊.
至于空值,可以断点不?进去看看到底东西传过来了没有?
int pos; 
pos = file.indexOf("filename=\""); 
pos = file.indexOf("\n",pos) + 1; 
pos = file.indexOf("\n",pos) + 1; 
pos = file.indexOf("\n",pos) + 1; 
int boundaryLocation = file.indexOf(boundary,pos) - 4; 
int startPos = ((file.substring(0,pos)).getBytes()).length;
int endPos = ((file.substring(0,boundaryLocation)).getBytes()).length;
这些是干什么 的S