当前位置: 代码迷 >> Java Web开发 >> swfupload下传,服务器为linux出现的有关问题(急求)
  详细解决方案

swfupload下传,服务器为linux出现的有关问题(急求)

热度:5324   发布时间:2013-02-25 21:12:15.0
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;
这些是干什么 的SWF必须要这样的?没用过
之前我自己写的Flex上传Servlet也不要这样的.如果文件是空的话,那开始点和结束点是不是一样了,所以长度为0.或者根本读取Request值 就是空的.
rootPath = realPath + "/upload/"; 似乎使用\\upload\\更好