文件上传与下载

昨天搞了一下午的文件上传下载,文件上传实现了,用的是apache fileupload,而文件下载一直没有搞好,看了看公司的项目,发现文件下载是靠浏览器自动实现的,你只要将你的文件路径写好,[url=/testUpload/upload/20080331105430.doc]文件下载[/url],用户只要点击这个超链接就可以保存文件了,testUpload是我的项目名称,这是从服务器上下载文件,以后再用到下载以后再学习吧
现在说下文件上传功能:
index.jsp页面:
<html>
<head>
<script type="text/javascript">
function doSubmit(){
document.form_save.submit();
}
</script>
</head>
<body>
<form action="file_upload.jsp" method=post id='form_save' name='form_save' enctype="multipart/form-data" onsubmit="return CheckUploadForm()">
<table class='tablist' style="width: 550px; margin: auto" cellspacing=0 cellpadding=0>
<tr><th align="right" style="width: 180px;">选择文件</th>
<td><input type=file class="input_center" name=uploadfile size=1 id="select_file" style="width:350px" ></td></tr>
<tr><td colspan="2" align="center">
<input type=button name="" id="upload_file" onclick="doSubmit()" value="上传文件"></td></tr>
</table>
</form></body>
***********************************************
当然form的提交可在是servlet或者是.do都可以,为了方便我就在jsp中处理了,只是测试而已
file_upload.jsp页面:
<%@page contentType="text/html;charset=UTF-8"%>

<%@ page import="org.apache.commons.fileupload.*"%>
<%@ page import="java.io.*"%>
<%@ page import="java.util.*"%>

<%@page import="org.apache.commons.fileupload.servlet.ServletFileUpload"%>
<%@page import="org.apache.commons.fileupload.disk.DiskFileItemFactory"%>
<%@page import="org.apache.commons.io.FilenameUtils,org.apache.commons.io.FileUtils"%>

<script src="<%=request.getContextPath()%>/js/common.js"></script>
<%

DiskFileItemFactory factory = new DiskFileItemFactory();
//这里定义文件保存地址,我就直接保存到根目录下了
String path=request.getRealPath("/upload");


//这里是设置临时文件的存储目录,我也设置到根目录下了
factory.setRepository(new File(path));
//下面这个方法意思是说如果大于1024*1024才存储到临时目录下,如果小于就直接读取到内存中
factory.setSizeThreshold(1024 * 1024);
//ServletFileUpload是主要的操作
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setHeaderEncoding("UTF-8");
try{
//将表单读取过来,存到List里面
List<FileItem> list = upload.parseRequest(request);
//便利这个list
for(FileItem item:list){
//isFormField如果为真表示该字段是非文件字段
if(item.isFormField()){
//获取字段name属性里的内容
String name = item.getFieldName();
//获取该字段的value
String value = item.getString("utf-8");

System.out.println("FieldValue=="+value);
//保存到request
request.setAttribute(name, value);

}else{//如果该字段是file
//获取字段的name属性
String name = item.getFieldName();
//获取字段value属性
String value = item.getName();
//由于浏览器的不同,所以只讲文件名分割过来
int start = value.lastIndexOf("\\");

String fileName = value.substring(start+1);

request.setAttribute(name, fileName);

System.out.println("fieldName is:"+name+" fieldValue is:"+fileName);
//保存
item.write(new File(path,fileName));//可以直接输入,也可以通过流操作。
}
}

}catch(Exception e){
e.printStackTrace();
}

%>
<script type="text/javascript">

System.out.println("aaa");
window.opener.refreshAttach();
closeWindow();

</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值