前端到后台的上传下载word文档

-------------------上传 --------------------

<p onclick="javascript:showUploadProjectDocDialog();
上传
</p>

//对话框-上传项目文档
function showUploadProjectDocDialog(){
//项目编码
$('#hidden_project_code').val(currentProjectCode);
$('#dialog_upload_project_docs').dialog(
{
position:[400,100],
width: 700,
height: 200,
modal: true,
resizable: false,
closeOnEscape:true,
title:"上传文档"
}
);
}
function closeUploadProjectDocDialog(){
$('#dialog_upload_project_docs').dialog("close");
}

 

<!-- 弹出层-上传项目文档 -->
<!--
1-校准证书, 2-验证方案(原始), 3-验证方案(校验),4-验证报告(原始), 5-验证报告(校验),
11-校准证书pdf , 12-验证方案pdf, 13-验证报告pdf,14-原始数据pdf
-->
<div id="dialog_upload_project_docs" style="display:none;" >
<form id="form_upload_project_docs" action="<%=basePath%>/upload/uploadProjectDocs.api" enctype="multipart/form-data" method="post">
<input type="hidden" name="project_code" id="hidden_project_code"/>
<table class="formtable">
<tr>
<td>文档类型</td>
<td align="left">
<select name="doc_type">
<option value="1">word-校准证书</option>
<option value="3">word-验证方案</option>
<option value="5">word-验证报告</option>

<option value="11">pdf-校准证书(用户可下载)</option>
<option value="12">pdf-验证方案(用户可下载)</option>
<option value="13">pdf-验证报告(用户可下载)</option>
<option value="14">pdf-原始数据(用户可下载)</option>
</select>
</td>
</tr>

<tr>
<td>选择文件</td>
<td><input type="file" name="file"/></td>
</tr>
<tr>
<td colspan="2" style="text-align:center;">
<input type="button" value="上传" onclick="uploadProjectDoc();"/>
</td>
</tr>
</table>
</form>
</div>

//上传项目文档
function uploadProjectDoc(){
var _form = $('#form_upload_project_docs');
var options = {
dataType : "json",
success: function(jsonResult) {
if(jsonResult.code!='0'){
alert('上传失败,请重新尝试!');
return false;
}
alert('文档上传完毕!');
closeUploadProjectDocDialog();
//根据projectCode获取项目,刷新文档列表
findProjectFromRedis(currentProjectCode);
},
error: function(result) {
alert('上传失败,请重新尝试!');
}
};
_form.ajaxSubmit(options); // <script type="text/javascript" src="<%=basePath%>/js/lib/jquery-form.js"></script> <!-- 用于ajaxSubmit 不跳转并提交表单-->
return false;
}

//java方法 - 获取参数 取出原始名 和 创建文件路径 上传
@RequestMapping("uploadCheckOutDocs")
public void uploadCheckOutDocs(HttpServletRequest request,HttpServletResponse response,MultipartFile file,ApiJsonResult result) throws Exception {
//预创建json结果
ApiJsonResult apiJsonResult = new ApiJsonResult();
apiJsonResult.setCode(StatusCodeEnum.SUCCESS.getCode());
apiJsonResult.setMsg(StatusCodeEnum.SUCCESS.getDesc());

try {
//请求参数
String id = request.getParameter("hidden_inboundLot_id");
String inboundId = request.getParameter("hidden_inbound_id");

ScmInboundLot scmInboundLot = scmInboundLotService.findScmInboundLotById(id);
ScmGoods scmdGoods = scmGoodsService.findScmGoodsById(scmInboundLot.getGoodsId());

String path = request.getSession().getServletContext().getRealPath( "/upload/doc/" ); //tomcat路径
//String path = ApiConstants.PORTAL_PIC_DIR;
File pathFile = new File(path);
if (!pathFile.exists() && !pathFile.isDirectory())
{
pathFile.mkdir();
}
//文件
String dateStr = DateUtil.fmtDate( new Date(), "yyyyMMddHHmmss");
String originalName = file.getOriginalFilename(); //原始文件名
String extName = originalName.substring( originalName.lastIndexOf(".") ); //文件后缀 -- doc docx
String docName = scmdGoods.getName()+"_"+scmInboundLot.getLotCode()+"_" + inboundId + "农残检验记录" + dateStr + extName; //上传保存文件名
File savePath = new File(path + File.separator + docName);
//文档中文名
//String docCnName = project.getProjectName();
// 转存文件
file.transferTo(savePath );

//入库单明细业务处理
/*projectService.updateValidateProjectByCode(project);*/

} catch (Exception e) {
e.printStackTrace();
apiJsonResult.setCode(StatusCodeEnum.SYSPARAMERROR_CALLAPI_ERROR.getCode());
apiJsonResult.setMsg(StatusCodeEnum.SYSPARAMERROR_CALLAPI_ERROR.getDesc());
}
//输出api结果
JsonWebPrintUtils.printApiResult(request, response, apiJsonResult);
}

 

 

 

 

 

 

 

---------------------------------下载 ----------------------------------------------------------------
<!-- 导出项目文档 -->
<form name="form1" id="form1" action="<%=basePath%>/down/downProjectDoc.api" method="post">
<input type="hidden" name="param1" id="hidden_param1"/>
</form>

//导出数据
function downProjectDoc(docType,docName,docCnName){
var requestParam = {}; //整体请求参数
var sysParam = {}; //系统参数
var busParam = {}; //业务参数
requestParam.sysParam = sysParam; //系统参数(api要求的必须传递的参数)
requestParam.busParam = busParam; //业务参数
busParam.projectCode=currentProjectCode;
busParam.docType=docType;
busParam.docName=docName;
busParam.docCnName=docCnName;

//整体请求参数转成json串
var requestParamJsonObject = JSON.stringify(requestParam);
//调用controller
$('#hidden_param1').val( requestParamJsonObject );
$('#form1').submit();
}


/**
* 下载项目文档
*/
@RequestMapping("downCheckOutDoc")
public void downCheckOutDoc(HttpServletRequest request,HttpServletResponse response,String param1) throws Exception {
//获取请求参数
HttpRequestParamVo httpRequestParamVo = JsonConverter.json2Obj(param1, HttpRequestParamVo.class);
JSONObject busParam = httpRequestParamVo.getBusParam();
Integer docType = busParam.getInteger("docType");
String docName = busParam.getString("docName");
String docCnName = busParam.getString("docCnName");
String projectCode = busParam.getString("projectCode");

if(docType.intValue()>10){ //PDF
response.setContentType(Constants.CONTENT_TYPE_PDF);
}else{ //WORD
response.setContentType(Constants.CONTENT_TYPE_WORD);
}
response.setCharacterEncoding("UTF-8");
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
OutputStream out = null;
try {
out = response.getOutputStream();// 取得输出流
response.reset();// 清空输出流
String filename = docCnName + docName.substring( docName.lastIndexOf(".") );
//filename = new String(filename.getBytes("utf-8"),"iso8859-1");
filename = new String(filename.getBytes("gb2312"),"iso8859-1");
response.setHeader("Content-disposition", "attachment; filename=" + filename);// 设定输出文件头
//输出文件
String savePath = request.getRealPath("doc") + File.separator + projectCode + File.separator + docName;
File file = new File(savePath);
FileInputStream fis = new FileInputStream(file);
BufferedInputStream bis = new BufferedInputStream(fis);
byte[] array = new byte[1024];
int len =0;
while( (len=bis.read(array))>0 ){
out.write(array, 0, len);
out.flush();
}
bis.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (out != null) {
try {
out.close();
} catch (Exception e2) {
e2.printStackTrace();
}
}
}

}

posted on 2020-01-13 17:45  大孟子  阅读(1390)  评论(1编辑  收藏  举报

导航