您的位置:首页 > 其它

文件下载与上传

2016-06-28 17:33 169 查看


 这里使用的是springMVC自带的下载组件;在IOC容器中配置

    <bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding">
<value>UTF-8</value>
</property>
<property name="maxUploadSize">
<value>102505856</value><!-- 上传文件大小限制为31M,31*1024*1024 -->
</property>
<property name="maxInMemorySize">
<value>4096</value>
</property>
</bean>
  注入CommonsMultipartResolver对象即可

单文件上传

/**  后台数据处理
 * 
 * @author zt
 * @Date 2015年12月17日
 * @param request
 * @param response
 * @param encryption
 * @param model
 * @param qx
 * @param rjlx
 * @param rjbb
 * @param session
 * @return
 */
@RequestMapping("/addloadUI.do")
public String addloadUI(HttpServletRequest request, HttpServletResponse response, Scrjbb scrjbb, Model model, Qx qx, Rjlx rjlx, Rjbb rjbb,
HttpSession session) {
// 准备数据
List<Qx> qxlists = qxService.getAllQxList();
model.addAttribute("qxList", qxlists);

List<Rjbb> rjbblists = rjbbService.getAllRjbbList();
model.addAttribute("rjbbList", rjbblists);

List<Rjlx> rjlxlists = rjlxService.getAllRjlxList();
model.addAttribute("rjlxList", rjlxlists);
return "encryptionManage/scrjbb/scrjbb_upload";
}

前端页面form表单:
/*数据接收用C标签处理*/
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>  

<form id="rjlx"  enctype="multipart/form-data" method="post" >
<table class="tableForm">
<tr>
<th>软  件  类  型:</th>
<td><select name="rjlxid" id="dataTypeId">
<option value="0">---请选择菜单---</option>
<c:forEach items="${rjlxList }" var="rjlx">
<option value="${rjlx.rjlxid }">${rjlx.rjlx }</option>
</c:forEach>
</select></td>
</tr>
<tr>
<th>软  件  版  本:</th>
<td><select name="rjbbid" id="dataTypeId">
<option value="0">---请选择菜单---</option>
<c:forEach items="${rjbbList }" var="rjbb">
<option value="${rjbb.rjbbid }">${rjbb.rjbb }</option>
</c:forEach>
</select></td>
</tr>
<tr>
<th>加  密  权  限:</th>
<td><select name="qxid" id="dataTypeId">
<option value="0">---请选择菜单---</option>
<c:forEach items="${qxList }" var="qx">
<option value="${qx.qxid }">${qx.bz }</option>
</c:forEach>
</select></td>
</tr>

<tr>
<th>上  传  路  径:</th>
<td><input name="file" type="file" class="easyui-validatebox" data-options="required:'true',missingMessage:'上传路径不能为空'"/>

</td>
</tr>
</table>

</form>

后台上传文件处理:

/**
 * 软件上传发布
 * 
 * @author zt
 * @Date 2015年12月17日
 * @param request
 * @param response
 * @param scrjbb
 * @param model
 * @param session
 * @return
 * @throws IOException
 * @throws ServletException
 * @throws FileUploadException
 */

@RequestMapping(value = "/upLoadFile.do", method = RequestMethod.POST)
public String  registerStudent(@RequestParam("file") MultipartFile file, HttpServletRequest request, HttpServletResponse response, Scrjbb scrjbb,
Model model, HttpSession session) throws IOException {
String path = "D:\\upLoadFile";// 将上传文件保存到D盘中files文件夹中
File tmpFile = new File(path);
if (!tmpFile.exists()) {
// 创建临时目录
tmpFile.mkdir();
}

                  String fileName = file.getOriginalFilename();
String fileUrl = tmpFile + "/" + file.getOriginalFilename();
fileUrl = fileUrl.replaceAll("\\\\", "/");

try {
byte[] bytes = file.getBytes();

FileOutputStream fos = new FileOutputStream(fileUrl);
fos.write(bytes);
fos.close();

} catch (IOException e) {

e.printStackTrace();
}

/** 对上传文件进行压缩处理 **/

// 上传成功则保存上传软件的信息
scrjbb = new Scrjbb();
Qx qx = qxService.selectByPrimaryKey(request.getParameter("qxid"));
Rjbb rjbb = rjbbService.selectByPrimaryKey(request.getParameter("rjbbid"));
Rjlx rjlx = rjlxService.selectByPrimaryKey(request.getParameter("rjlxid"));

scrjbb.setScrjjmqx(qx.getQx());
scrjbb.setScrjbb(rjbb.getRjbb());
scrjbb.setScrjlx(rjlx.getRjlx());
scrjbb.setScbz(fileName);
scrjbb.setScrjbbid(UUIDPrimaryKeyUtil.getPrimaryKey());

scrjbb.setCreatetime(TimeFormatUtil.getNowTime());
scrjbb.setUploadurl(fileUrl);

Boolean mark = scrjbbService.addScrjbb(scrjbb); 

return mark.toString();
}






单文件下载

前端页面下载事件触发------选择需要下载项---------将下载项信息ID传到后端控制层(这里用的是Spring框架自带的下载API):

//下载

function downLoad() {
var rows = datagrid.datagrid("getChecked");
var bcwjlj;
var encryptionid;
if (rows.length==1) {
bcwjlj=rows[0].bcwjlj;
encryptionid=rows[0].encryptionid;

       if(bcwjlj!=""&&bcwjlj!=null){

        window.location='<%=basePath%>/encryptionController/downLoadUrl.do?encryptionid='+encryptionid;

       }else{

        $.messager.alert("消息提示", "未授权请等待", "error");

       }  
} else {
$.messager.alert("消息提示", "请选择一行下载", "error");

}

}

后端控制层----思路流程--通过前端选项ID查询出在对应于服务器中的文件路径:

/**
 * 加密文件下载
 * 
 * @author zt
 * @Date 2015年12月16日
 * @param request
 * @param response
 * @return
 * @throws IOException
 */
@RequestMapping("/downLoadUrl")
public void downloadd(HttpServletRequest request,
HttpServletResponse response, Model model, HttpSession session)
throws IOException {

String filepath = encryptionService.selectByEncryptionid(
request.getParameter("encryptionid")).getBcwjlj();
String fp = filepath.substring(filepath.lastIndexOf("/") + 1,
filepath.length());
// 路径通过查询或者前台传过来,服务器文件路径
if (null == filepath || "".equals(filepath)) {
return;
}

               /*响应头设置*/
response.setCharacterEncoding("utf-8");
response.setContentType("application/x-msdownload");
response.setHeader("Content-Disposition", "attachment;fileName="
+ URLEncoder.encode(fp, "UTF8"));
InputStream inputStream = null;
OutputStream os = null;
try {
// 根据服务器文件地址从服务器读取文件(从服务器中读入到程序中)
inputStream = new FileInputStream(new File(filepath));

              /*通过响应对象取得输出流*/

           os = response.getOutputStream();

           
byte[] b = new byte[2048];
int length;

                       /*循环处理输入流,并循环输出*/
while ((length = inputStream.read(b)) > 0) {
os.write(b, 0, length);
}

os.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (os != null) {
os.close();
os = null;
}
if (inputStream != null) {
inputStream.close();
inputStream = null;
}
}

}

 /**********************************************************************************/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息