文件上传、下载

来源:互联网 发布:大数据 授信模型 编辑:程序博客网 时间:2024/06/05 00:28

1、 文件下载

/**

* @description 文件下载
* @param  文件请求对象
* @return
* @author 
*/
    @RequestMapping(value = "downloadFile")
    @ResponseBody
    public String downloadFile(HttpServletRequest request, HttpServletResponse response) {
        response.setCharacterEncoding("utf-8");
        response.setContentType("multipart/form-data");
        //文件id
        String fileId = DataUtils.nullToEmpty(request.getParameter("fileId")).trim();
        if(!StringUtils.isBlank(fileId)){
            OutputStream out = null;
            InputStream inputStream = null;
            HttpURLConnection con = null;
            try
            {
                ResourceBundle bundle = ResourceBundle.getBundle("comm.config.application");  
                String filePath = bundle.getString("file.url");  
                URL url = new URL(filePath+"/downloadFile?fileId="+fileId);
                
                con = (HttpURLConnection)url.openConnection();
                response.setHeader("Content-Disposition",
                    con.getHeaderField("Content-Disposition"));
                out =  response.getOutputStream();
                inputStream = con.getInputStream();
                byte[] b = new byte[2048];
                int length;
                while ((length = inputStream.read(b)) > 0) {
                    out.write(b, 0, length);
                }
            }
            catch (Exception e)
            {
                e.printStackTrace();
            }finally{
                try
                {
                    if(null != out)
                    out.close();
                    if(null != inputStream)
                    inputStream.close();
                }
                catch (IOException e)
                {
                    e.printStackTrace();
                }
            }
        }
        
        return null;

    }

2、文件保存服务器,然后上传

(1)
/**
     * 保存文件到服务器
     * @param request
     * @param response
     * @return
     */
private String saveFile(HttpServletRequest request, HttpServletResponse response){
   
MultipartFile file = null;


// 将当前上下文初始化给 CommonsMutipartResolver (多部分解析器)
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(
request.getSession().getServletContext());
MultipartHttpServletRequest multiRequest = null;
// 检查form中是否有enctype="multipart/form-data"
if (multipartResolver.isMultipart(request)) {
// 将request变成多部分request
// multiRequest =multipartResolver.resolveMultipart(request);
multiRequest = (MultipartHttpServletRequest) request;
Iterator iter = multiRequest.getFileNames();
while (iter.hasNext()) {
file = multiRequest.getFile(iter.next().toString());
multiRequest.getFileNames();
if (file != null) {
break;
}
}


}
;
// String fileName= request.getParameter("fileName");
String fileName = file.getOriginalFilename();
if (StringUtils.isEmpty(fileName)) {
return null;
}
File directory = new File("upload");
String filePath = null;
try {
filePath = directory.getCanonicalPath() + File.separator;
} catch (IOException e1) {
e1.printStackTrace();
}


// 判断文件夹是否存在,如果不存在则创建文件夹
File folder = new File(filePath);
if (!folder.exists()) {
folder.mkdirs();
}
filePath += fileName;


InputStream is = null;
try {
is = file.getInputStream();
} catch (IOException e2) {
e2.printStackTrace();
}


File newFile = new File(filePath);
OutputStream os = null;
try {
os = new FileOutputStream(newFile);
byte buffer[] = new byte[4 * 1024];
int len = 0;
while ((len = is.read(buffer)) != -1) {
os.write(buffer, 0, len);
}
os.flush();
return filePath;
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
os.close();
} catch (Exception e) {
e.printStackTrace();
}
}
return null;
}

(2)

 /**
     * 文件上传</br>
     * 必要参数 fileName、systemId、userCode、bussType
     * @param request
     * @param response
     * @return
     */
    @RequestMapping("/uploadFile")
    @ResponseBody
    public String uploadFile(HttpServletRequest request, HttpServletResponse response){
    Map<String,String> map = new HashMap<>();
    ResourceBundle bundle = ResourceBundle.getBundle("comm.config.application");  
String fileServerURL =  bundle.getString("file.url");  
String result = null;
//当前登录用户信息
UserInfo user  = (UserInfo)request.getAttribute(ConstantUtil.USER_ATTRIBE_NAME);

    //保存文件到服务器   
    String filePath=saveFile(request,response);
    if(StringUtils.isEmpty(filePath)){
    return null;
    }
String systemId= request.getParameter("systemId");
String userCode = user.getUserCode();
String bussType = request.getParameter("bussType");

map.put("systemId", systemId);
map.put("userCode", userCode);
map.put("bussType", bussType);
File file = new File(filePath);
try {
map.remove("filePath");
Map<String, String> fileResult = FileServerHelper.uploadFile(fileServerURL + "/uploadFile", file, map);
file.delete();
result = JSON.toJSONString(fileResult);



} catch (Exception e) {
e.printStackTrace();
}
LOGGER.info("系统生成文件上传到文件服务器响应信息:"+result);
file.delete();
return result;
    }

原创粉丝点击