关于上传下载的问题
上传:对文件进行重命名,并把原文件名和新文件名存储于数据库下载:根据数据库存储的记录,客户端下载时弹出的保存路径对话框,文件名那里默认原文件名请问可以这样实现吗?代码上该...
上传:
对文件进行重命名,并把原文件名和新文件名存储于数据库
下载:
根据数据库存储的记录,客户端下载时弹出的保存路径对话框,文件名那里默认原文件名
请问可以这样实现吗?
代码上该怎么实现呢?
我只用jsp+javabean,不用struts
上传时需要调用上传组件,可是存数据库的代码写到哪里?写上传组建里不合规矩吧
下载时怎么默认原文件名啊,怎么设置 展开
对文件进行重命名,并把原文件名和新文件名存储于数据库
下载:
根据数据库存储的记录,客户端下载时弹出的保存路径对话框,文件名那里默认原文件名
请问可以这样实现吗?
代码上该怎么实现呢?
我只用jsp+javabean,不用struts
上传时需要调用上传组件,可是存数据库的代码写到哪里?写上传组建里不合规矩吧
下载时怎么默认原文件名啊,怎么设置 展开
4个回答
展开全部
如果用Struts做文件上传的话会比较容易些,首先你做文件上传是可以得到文件的完整路径的,也就是说你可以得到文件名,至于你怎么重命名就是你的问题了,你把改后的名字存进数据库就可以了!文件下载你只需要做一个超链接<a href="文件的路径">下载</a>这样就可以下载了,不需要做别的东西!
补充::::::::::::
我做过用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::::
<form action="add" method="post" ENCTYPE="multipart/form-data">
商品图片:<input type="file" name="upfile" value="上传文件"/><br>
商品编码:<input type="text" name="pdtcode"/><br>
商品名称:<input type="text" name="pdtname"/><br>
<input type="submit" name="btn_sumit" value="add"/>
</form>
补充::::::::::::
我做过用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::::
<form action="add" method="post" ENCTYPE="multipart/form-data">
商品图片:<input type="file" name="upfile" value="上传文件"/><br>
商品编码:<input type="text" name="pdtcode"/><br>
商品名称:<input type="text" name="pdtname"/><br>
<input type="submit" name="btn_sumit" value="add"/>
</form>
展开全部
把文件存储在数据库里要看文件有多大,如果普遍比较大的话,这种方式不可行,无论是对于数据库还是对于应用,但是技术上都是可以做到的
struts有文件上传的类,保存数据库就按照保存clob的方式去保存就可以。
下载没做过,不太清楚。
struts有文件上传的类,保存数据库就按照保存clob的方式去保存就可以。
下载没做过,不太清楚。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以使用jspsmartupload或apache commons fileupload组件,实现上传及下载文件. 文件被临时归类命名存储在硬盘,文件的原名字与新名在数据库中建立了对应关系, 下载时是原名.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼上的能不能说的再详细点呢??
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询