java上传文件
来源:互联网 发布:飞扬物流软件 编辑:程序博客网 时间:2024/04/29 18:39
1. org.apache.struts.upload.*;
这个比较操作上比较简单,用FormFile 得到一个上传文件的FormFile对象,对象中保存了上传文件的名字信息,上传表单子段信息和本地上传地址以及上传文件的流信息。然后再写到服务器文件中就ok了
// …// ① 检查输入请求是否为multipart的表单数据。
FormFile image = myform.getImagefile(); // imagefile为FormFile对象;String basepath = Utils.getBasePath(request);
if (null != image && image.getFileSize() > 0) {
imagename = member_id + "." + Utils.getFormFileType(image); //得到保存文件的类型
}
Utils.saveFile(basepath, "memimage", imagename, image);
// … public static String getFormFileType(FormFile file) {
String type = "";
int tmp = file.getFileName().indexOf(".");
if (tmp > 0) {
type = file.getFileName().substring(tmp + 1);
}
return type;
}public static void saveFile (StringbasePath,String subPath,String fileName,FormFile file)
throws Exception {
if (null == file || file.getFileSize() < 1) {
return;
}
String filePath = basePath + "upload//" + subPath+"//";
File fileTmp = new File(filePath);
if (fileTmp.exists()) {
if (!fileTmp.isDirectory()) {
throw new AppException("文件保存路径错误!");
}
} else {
fileTmp.mkdirs();
}fileTmp = new File(filePath + fileName);
FileOutputStream fo = new FileOutputStream(fileTmp);
fo.write(file.getFileData());
fo.close();
}
2.Jakarta Commons.FileUpload
首先创建一个HTML页面。注意,凡是要上载文件的表单都必须设置enctype属性,且属性的值必须是multipart/form-data,同时请求方法必须是POST。下面的表单除了上载两个文件,另外还有一个普通的文本输入框:
<form name="myform" action="fileuploaddemo.jsp" method="post" enctype="multipart/form-data"> 输入你的名字:<br /> <input type="text" name="name" size="15"/><br /> 图形:<br /> <input type="file" name="imagefile"><br/> 文件:<br /> <input type="file" name="myfile"><br /><br /> <input type="submit" name="Submit" value="Submit your files"/>
// …// ① 检查输入请求是否为multipart的表单数据。boolean isMultipart = FileUpload. isMultipartContent(request);// …// ② 为该请求创建一个句柄,通过它来解析请求。执行// 解析后,所有的表单项目都保存在一个List中。DiskFileUpload upload = new DiskFileUpload();// 通过句柄解析请求,解析得到的项目保存在一个List中List items = upload.parseRequest(request);// …// ③ 通过循环依次获得List里面的文件项目。要区分表示// 文件的项目和普通的表单输入项目,使用isFormField()// 方法。根据处理请求的要求,我们可以保存上载的文// 件,或者一个字节一个字节地处理文件内容,或者打// 开文件的输入流。Iterator itr = items.iterator();while(itr.hasNext()) { FileItem item = (FileItem) itr.next(); // 检查当前的项目是普通的表单元素,还是一个上载的文件 if(item.isFormField()) {// 获得表单域的名字 String fieldName = item.getFieldName();// 如果表单域的名字是name… if(fieldName.equals("name")) request.setAttribute("msg", "Thank You: " + item.getString()); } else {// 该项目是一个上载的文件,把它保存到磁盘。// 注意item.getName()// 会返回上载文件在客户端的完整路径名称,这似乎是一个BUG。// 为解决这个问题,这里使用了fullFile.getName()。 File fullFile = new File(item.getName()); File savedFile = new File (getServletContext().getRealPath("/"), fullFile.getName()); item.write(savedFile); }}
我们可以通过上载句柄的upload.setSizeMax来限制上载文件的大小。当上载文件的大小超过允许的值时,程序将遇到异常。在上面的例子中,文件大小的限制值是-1,表示允许上载任意大小的文件。
还有其他一些略有变化的使用形式,正如前面所指出的,我们可以在上载的文件上打开一个输入流,或者让它们驻留在内存中直至空间占用达到一定的限制值,或者在判断文件类型的基础上,以String或Byte数组的形式获取其内容,或者直接删除文件。这一切都只要使用FileItem类提供的方法就可以方便地做到(DefaultFileItem是FileItem的一个实现)。
- Java 文件上传 JQ 文件上传
- java文件上传原理
- java文件上传原理
- java上传文件
- 上传文件 JSP+java
- JAVA上传文件
- java上传文件
- java fileupload上传文件
- java-文件上传案例
- JAVA上传EXCEL文件
- java上传文件
- java 超大文件上传
- java上传文件实例
- java 文件上传
- JAVA 上传文件类
- JAVA之"文件上传"
- java文件上传
- java文件上传方法
- 在FF中用JS关闭当前页
- dos中copy命令的C语言实现。。。。
- 用JSP实现上传文件的两种方法
- 网页播放器代码-Windows Media Player 系列(不同面板样式)
- Ubuntu挂了~~
- java上传文件
- 一个用JS作的简单的画图程序,可改画线粗细和顡色,觉得挺有意思的,所以放上来,以供相互学习
- Title:查询表主键外键信息的SQL
- 使用Struts上传文件
- ubuntu6.10安装过程
- 基于Java Web的文件上传进度显示的一种解决方案
- 如何要WPF中的ToolTip更漂亮?
- 0416
- 了解ClassLoader