文件下载:
public void uploadcompressedfiles(String store_id , HttpServletResponse response, HttpServletRequest request ){
Response response_1 = new Response ();
String agent = request.getHeader ( "User-Agent" );//获取用户使用的浏览器
//根据不同浏览器进行不同的编码
String filenameEncoder = "";
List<Map<String,Object>> ListMap = jdbcTemplate.queryForList ( "SELECT UCF.store_id,UCF.updateFileName,UCF.generic_version FROM upload_compressed_files UCF" );
if(ListMap.size() == 0){
response.setContentType("text/javascript;charset=utf-8");
response.setHeader("content-type","application/json");
response_1.setSuccess(false);
response_1.setError("暂无版本更新!");
try{
response.getWriter().println( JSONObject.fromObject(response_1).toString());
}catch(Exception e1){
e1.printStackTrace();
}
return;
}
if("1".equals ( ListMap.get ( 0 ).get ( "generic_version" ) )){
try {
//ListMap.get ( 0 ).get ( "updateFileName" ).toString () ; 在数据库获取到文件得名字
//updateUrl = /root/carrefour_private/static/interactive_log/100232565.zip 得到完整文件所在得位置和路径
// public static String 文件所在位置 = "/root/carrefour_private/static/interactive_log/";
String updateUrl = "文件所在位置"+ListMap.get ( 0 ).get ( "updateFileName" ).toString ();
File f = new File(updateUrl);
// ListMap.get ( 0 ).get ( "updateFileName" ).toString ();数据库文件得名字 如:123666632.zip
if(f.exists()){
if(agent.contains ("MSIE")){ // IE浏览器
filenameEncoder = URLEncoder.encode(ListMap.get ( 0 ).get ( "updateFileName" ).toString (), "utf-8");
filenameEncoder = filenameEncoder.replace("+", " ");
}else if(agent.contains("Firefox")){// 火狐浏览器
BASE64Encoder base64Encoder = new BASE64Encoder ();
filenameEncoder = "=?utf-8?B?"+ base64Encoder.encode(ListMap.get ( 0 ).get ( "updateFileName" ).toString ().getBytes("utf-8")) + "?=";
}else{//其它浏览器
filenameEncoder = URLEncoder.encode(ListMap.get ( 0 ).get ( "updateFileName" ).toString (), "utf-8");
}
//response.setHeader("content-type", "application/octet-stream");
response.setContentType("application/octet-stream");
// response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(ListMap.get ( 0 ).get ( "updateFileName" ).toString (), "UTF-8"));
//告诉客户端该文件不是直接解析而是以附件形式打开(下载)
response.setHeader("Content-Disposition", "attachment;filename="+filenameEncoder);
byte[] buffer = new byte[1024];
FileInputStream fis = null;
BufferedInputStream bis = null;
try {
fis = new FileInputStream (f);
bis = new BufferedInputStream(fis);
OutputStream os = response.getOutputStream();
int i = bis.read(buffer);
while (i != -1) {
os.write(buffer, 0, i);
i = bis.read(buffer);
}
}
catch (Exception e) {
throw new Exception(e.getMessage());
}
finally {
if (bis != null) {
try {
bis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (fis != null) {
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}catch (Exception ee){
ee.printStackTrace();
response.setContentType("text/javascript;charset=utf-8");
response.setHeader("content-type","application/json");
response_1.setSuccess(false);
response_1.setError("暂无版本更新!");
try{
response.getWriter().println(JSONObject.fromObject(response_1).toString());
}catch(Exception e1){
e1.printStackTrace();
}
}
}
}
文件上传:
public Response createCompress( MultipartFile updateFileName){
// 文件要上传得目录或者服务器位置
// 如 // public static String update_File_zip = "D:/QingDao-CJZY-2019-4-10-domes/carrefour_private/code/service/src/main/resources/static/upload/";
// 方法一:
updateFileName.transferTo(new File(update_File_zip ));
// 方法二:
public List multipleImageUpload(@RequestParam("uploadFiles") MultipartFile[] files){
List<Map<String,Object>> root=new ArrayList<Map<String,Object>>();
// //循环保存文件
for (MultipartFile file : files) {
//一个文件上传的结果
Map<String,Object> result = new HashMap<String, Object>();
//上传结果信息
String result_msg="";
if (file.getSize() / 1000 > 100) {
// result_msg="图片大小不能超过100KB";
} else {
//判断上传文件格式
String fileType = file.getContentType();
if (fileType.equals("image/jpeg") || fileType.equals("image/png") || fileType.equals("image/jpeg")) {
// 要上传的目标文件存放的绝对路径
final String localPath="D:\\demo";
//上传后保存的文件名(需要防止图片重名导致的文件覆盖)
//获取文件名
String fileName = file.getOriginalFilename();
//获取文件后缀名
String suffixName = fileName.substring(fileName.lastIndexOf("."));
//重新生成文件名
fileName = UUID.randomUUID() + suffixName;
if (this.upload(file, localPath, fileName)) {
//文件存放的相对路径(一般存放在数据库用于img标签的src)
String relativePath="img/"+fileName;
//前端根据是否存在该字段来判断上传是否成功
result.put("relativePath",relativePath);
result_msg="图片上传成功";
}
else{
result_msg="图片上传失败";
}
}
else{
result_msg="图片格式不正确";
}
}
result.put("result_msg",result_msg);
root.add(result);
}
String root_json= JSON.toJSONString(root);
System.out.println(root_json);
return root;
}
public boolean upload(MultipartFile file, String path, String fileName) {
//确定上传的文件名
String realPath = path + "\\" + fileName;
File dest = new File(realPath);
//判断文件父目录是否存在
if (!dest.getParentFile().exists()) {
dest.getParentFile().mkdir();
}
try {
//保存文件
file.transferTo(dest);
return true;
} catch (IllegalStateException e) {
e.printStackTrace();
return false;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
}