日期:2014-05-16  浏览次数:20750 次

linux下swfupload上传,fileOut = new FileOutputStream(fileName);的问题
代码如下:

得到的文件size是0
当fileOut.write(dataBytes,startPos,(endPos - startPos));
改成fileOut.write(dataBytes)
时,文件size不在是0但,上传的xls成乱码了,
谁有这方面的经验没?
<%@ 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 bgcolor="#ffffff"> 
<center> 
<%
String rootPath;
DataInputStream in = null;
FileOutputStream fileOut = null;
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);
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>