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