关于上传下载的问题

2025-01-02 16:29:02
推荐回答(4个)
回答1:

如果用Struts做文件上传的话会比较容易些,首先你做文件上传是可以得到文件的完整路径的,也就是说你可以得到文件名,至于你怎么重命名就是你的问题了,你把改后的名字存进数据库就可以了!文件下载你只需要做一个超链接下载这样就可以下载了,不需要做别的东西!
补充::::::::::::
我做过用jsp+servlet的文件上传,应该和用jsp+javabean的差不多,我把代码给你复制上来你看下,以前我做的时候是把存数据库写在上传的servlet里的,如果你认为那样不好的话可以在javabean里把文件名取出来然后再传给另外一个类处理也可以啊,附jsp+servlet上传代码:
servlet代码:
String code =null ;
String name =null ;
String filename =null;
File f =null;
String path = request.getRealPath("img");
System.out.println( "物理路径: "+path );
try{

DiskFileUpload fu = new DiskFileUpload();
//设置允许用户上传文件大小,单位:字节
fu.setSizeMax(10000000);
//maximum size that will be stored in memory?
//设置最多只允许在内存中存储的数据,单位:字节
fu.setSizeThreshold(4096);
// 设置一旦文件大小超过getSizeThreshold()的值时数据存放在硬盘的目录
fu.setRepositoryPath("C:\\winnt\\temp");
// 开始读取上传信息
List fileItems = fu.parseRequest(request);
Iterator it = fileItems.iterator();
while( it.hasNext()){
//请求过来的数据项
FileItem item = (FileItem) it.next();
if(item.isFormField()){ //判断是否是表单项
String fieldName = item.getFieldName();
String val = item.getString();
// System.out.println( fieldName);
// System.out.println( val );

if( fieldName.equals("pdtcode")){
code = val ;
}else if( fieldName.equals("pdtname")){
name = val;
}
}else{ //非表单项,文件数据

String ss = item.getName(); //取出文件名称包括完整物理路径

filename = ss.substring( ss.lastIndexOf("\\")+1,ss.length() );

System.out.println( ss );
System.out.println( filename );
f = new File( path +"\\"+filename );
item.write( f); //将文件直接写到指定目录

JSP::::


商品图片:

商品编码:

商品名称:



回答2:

把文件存储在数据库里要看文件有多大,如果普遍比较大的话,这种方式不可行,无论是对于数据库还是对于应用,但是技术上都是可以做到的
struts有文件上传的类,保存数据库就按照保存clob的方式去保存就可以。
下载没做过,不太清楚。

回答3:

可以使用jspsmartupload或apache commons fileupload组件,实现上传及下载文件. 文件被临时归类命名存储在硬盘,文件的原名字与新名在数据库中建立了对应关系, 下载时是原名.

回答4:

楼上的能不能说的再详细点呢??