如何用jsp将文件上传到服务器????

maomao0620 2003-11-05 10:44:48
csdn上的文章讲文件上传到服务器,都不是很明白。
希望高手能讲解一下。
<%@ page import="DBstep.iDBManager2000.*"%>
这个包到哪里能弄到啊?


<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<%@ page import="com.jspsmart.upload.*" %>
<%@ page import="DBstep.iDBManager2000.*"%>
<%
//实例化上载bean
com.jspsmart.upload.SmartUpload mySmartUpload=new com.jspsmart.upload.SmartUpload();
//初始化
mySmartUpload.initialize(pageContext);
//设置上载的最大值
mySmartUpload.setMaxFileSize(500 * 1024*1024);
//上载文件
mySmartUpload.upload();
//循环取得所有上载的文件
for (int i=0;i<mySmartUpload.getFiles().getCount();i++){
//取得上载的文件
com.jspsmart.upload.File myFile = mySmartUpload.getFiles().getFile(i);
if (!myFile.isMissing())
{
//取得上载的文件的文件名
String myFileName=myFile.getFileName();
//取得不带后缀的文件名
String suffix=myFileName.substring(0,myFileName.lastIndexOf('.'));
//取得后缀名
String ext= mySmartUpload.getFiles().getFile(0).getFileExt();
//取得文件的大小
int fileSize=myFile.getSize();
//保存路径
String aa=getServletContext().getRealPath("/")+"jsp\\";
String trace=aa+myFileName;
//取得别的参数
String explain=(String)mySmartUpload.getRequest().getParameter("text");
String send=(String)mySmartUpload.getRequest().getParameter("send");
//将文件保存在服务器端
myFile.saveAs(trace,mySmartUpload.SAVE_PHYSICAL);
//下面的是将上载的文件保存到数据库中
//将文件读到流中
java.io.File file = new java.io.File(trace);
java.io.FileInputStream fis = new java.io.FileInputStream(file);
out.println(file.length());
//打开数据库
ResultSet result=null;
String mSql=null;
PreparedStatement prestmt=null;
DBstep.iDBManager2000 DbaObj=new DBstep.iDBManager2000();
DbaObj.OpenConnection();
//将文件写到数据库中
mSql="insert into marklist (markname,password,marksize,markdate,MarkBody) values (?,?,?,?,?)";
prestmt =DbaObj.Conn.prepareStatement(mSql);
prestmt.setString(1, "aaa1");
prestmt.setString(2, "0000");
prestmt.setInt(3, fileSize);
prestmt.setString(4, DbaObj.GetDateTime());
prestmt.setBinaryStream(5,fis,(int)file.length());
DbaObj.Conn.setAutoCommit(true) ;
prestmt.executeUpdate();
DbaObj.Conn.commit();
out.println(("上载成功!!!").toString());
}
else
{ out.println(("上载失败!!!").toString()); }
}//与前面的if对应
%>


...全文
337 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
maomao0620 2003-11-05
  • 打赏
  • 举报
回复
还想请问下,
这种上传的方法是哪一种?
1将文件读到服务器,再从服务器中读到数据库中;
2直接将文件读到服务器内存中,然后存入服务器;
3将文件读入本地内存,然后读入服务器。

再就是你的字都是繁体的,你不是大陆人吗?
kinoviti 2003-11-05
  • 打赏
  • 举报
回复
這個包是人家自己寫的 你怎麽能弄過來呢
:)
我所知道的方法就是這個
不過上穿 就比 下載 好多了
因爲你不用擔心 文件名中含有非法字符 或者 中文/日文 等問題
不過我建議你 最好把所有上穿的文件名都改成 英文 這樣方便你後期處理,
還有可以通過 在文件名 後邊追加一個 隨機數(爲數大一點) 避免文件名重名的問題。
maomao0620 2003-11-05
  • 打赏
  • 举报
回复
<%@ page import="DBstep.iDBManager2000.*"%>

那这个包是怎么来的?
不用它可以吗?
还有更好的上传和写入数据库方法吗?
kinoviti 2003-11-05
  • 打赏
  • 举报
回复
這根提說起來很麻煩。
其實就是使用流進行上穿,在客戶端的html文件中產生一個文件名(就是 file 域)
然後在后台通過另一個jsp或者servlet得到文件名和路徑,但開一個服務器段的
路徑,然後用流上穿,再關閉文件就可以了。
對應的 具體實現細節 可以在網上隨便就找到,其中有些函數你可能不清楚,請參見
JavaDoc對應的Java.io.FileOutStream下的相關方法就可以了。

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧