日期:2014-05-18 浏览次数:20679 次
/* * 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...类别的增加.
再建个文件表