首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

100分 请问struts如何实现上传下载,(分不够另开贴再加!)

2012-02-02 
100分请教struts怎么实现上传下载,(分不够另开贴再加!)请教各位大虾,我对上传和下载的基本原理和思想不是

100分 请教struts怎么实现上传下载,(分不够另开贴再加!)
请教各位大虾,我对上传和下载的基本原理和思想不是很清楚,还有就是关于数据库方面的。比如现在我有4个类别,每个类别分别对应相应的文件,数据库是存放文件的目录(真实路径还是。。)还是文件名称抑或是两者都存,或者。。。还有4个类别就分别建立4个文件夹来存储用户上传的文件吗?还是用其他的方法?能不能提供一个详细的数据库表结构,让小弟参考一下,谢谢,不甚感激!

[解决办法]
下载用继承于DownloadAction类
上传用FormFile类,记得下载Commons FileUpload包
[解决办法]
上传的action

Java code
/* * Generated by MyEclipse Struts * Template path: templates/java/JavaClass.vtl */package com.loner.struts.action;import java.io.File;import java.io.FileOutputStream;import java.io.InputStream;import java.io.OutputStream;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.Action;import org.apache.struts.action.ActionForm;import org.apache.struts.action.ActionForward;import org.apache.struts.action.ActionMapping;import org.apache.struts.upload.FormFile;import com.loner.struts.form.FileForm;/**  * MyEclipse Struts * Creation date: 12-08-2007 *  * XDoclet definition: * @struts.action path="/file" name="fileForm" input="/file.jsp" scope="request" validate="true" */public class FileAction extends Action {    /*     * Generated Methods     */    /**      * Method execute     * @param mapping     * @param form     * @param request     * @param response     * @return ActionForward     */    public ActionForward execute(ActionMapping mapping, ActionForm form,            HttpServletRequest request, HttpServletResponse response) {                FileForm fileForm = (FileForm) form;                String dir = servlet.getServletContext().getRealPath("/upload");//获得一个目录,这个目录                        FormFile file = fileForm.getFile();//取得文件的值                        String fname = file.getFileName();//取的文件名                        String fsize = Integer.toString(file.getFileSize())+"bytes";//取得文件大小                try{            InputStream streamIn = file.getInputStream();//构建一个流对象                        OutputStream streamout = new FileOutputStream(dir+"/"+fname);                                                int bytesRead = 0;                        byte[] buffer = new byte[8192];//定义一个字节数组            while((bytesRead=streamIn.read(buffer,0,8192))!=-1){//如果还有内容就写入定义的变量中                                                streamout.write(buffer,0,bytesRead);//利用输出流对象输出            }            streamout.close();            streamIn.close();        }catch(Exception ex){            ex.printStackTrace();        }                return null;    }}
[解决办法]
数据库存文件可以用BLOB直接存成二进制也可以村文件的路径,
用二进制的话,可以用流直接导入数据库存储下来, 读的时候就再用流导出来即可
用文件路径的话,数据库里只是存一个字符串而已,数据库对这个文件的存在并不知道。
读出时,先从数据库中读出文件的路径,然后根据这一路径读出文件即可。

至于lz说的4个类 就建4个文件夹 这完全取决与程序员的选择,你可以建或者不建,
甚至你把文件直接放在C盘根目录,只要数据库中的路径保存正确,你就可以正确读出该文件
[解决办法]
http://blog.csdn.net/hy0231/archive/2008/12/19/3555957.aspx
这里很清楚。
[解决办法]
上传的话可以使用一些插件,网上很多,下载也可以,下载也可以把文件的地址作为链接也可以实现下载的效果。
上传的话把上传文件的名字(通过国际化把中文乱码解决),上传到空间的路径都写进数据库,读取时直接把名字和路径拿出来就可以了
[解决办法]
我刚刚做了这个模块!全部代码提供,全面支持!顶 305954240 兄弟多多给我分呀 也是struts的 servlet+jsp的做过,简单的
[解决办法]
上传下载我就不说了...>_<
数据库结构我说下我的想法
你有4个类别..那你建个类别表...
很简单的表..typeId 主键, typeName 名称, typeFilePath 这个类型的文件夹路径, ...还有你可以加几个remark注释...

这样方便以后有第5,第6...类别的增加.
再建个文件表


fileId 主键,userId 用户, typeId(外键类别的type) ,fileName 文件名称,还可以存入文件大小等信息...





[解决办法]
下载用DownloadAction类 
上传用FormFile类,需要下载Commons FileUpload包
[解决办法]
顶了!
[解决办法]
下载,这个是点链接下载
Action:

Java code
String strPKey= request.getParameter("PKey");UploadFileTbl file= dao.getFileByKey(strPKey);InputStream is = file.getFile_data();Utils.saveFile(is, response, file.getFile_name()); 

热点排行