springmvc 批量下载,
来源:互联网 发布:d3.js圆形动态加载 编辑:程序博客网 时间:2024/04/30 20:14
/**
* 批量下载product图片
* @param request
* @param response
* @param productId
*/
@RequestMapping(value="/downBatchProductImage")
public void downBatchProductImage(HttpServletRequest request, HttpServletResponse response, Long productId){
String productZipFileName = productId.toString();
//获取url集合 接口自己填上
List<String> imguri = “”;
File directory = null;
try {
for (int i = 0; i < imguri.size(); i++) {
ProductAssistController.saveProductFileFromURL(productZipFileName, Constants.ND+imguri.get(i));
}
} catch (Exception e) {
LOGGER.error(e.getMessage(), e);
}
directory = new File(productZipFileName);
if(directory.isDirectory()){
File[] listFiles = directory.listFiles();
ZipOutputStream zos = null;
FileInputStream fis = null;
try {
zos = new ZipOutputStream(new FileOutputStream(productZipFileName+".zip"));
for (int i = 0; i < listFiles.length; i++) {
File file = listFiles[i];
fis = new FileInputStream(file);
zos.putNextEntry(new ZipEntry(file.getName()));
int len;
//读入需要下载的文件的内容,打包到zip文件
byte[] buffer = new byte[1024];
while((len = fis.read(buffer))>0) {
zos.write(buffer,0,len);
}
}
if(null != zos){
zos.flush();
zos.close();
}if(null != fis){
fis.close();
}
} catch (Exception e) {
LOGGER.error(e.getMessage(), e);
}finally{
ProductAssistController.delFileOrDirectory(productZipFileName);
}
}
OutputStream out = null;
try {
out = response.getOutputStream();
String filesrc = productZipFileName+".zip";
File file = new File(filesrc);
if(file.exists()){
InputStream fis = new FileInputStream(file);
BufferedInputStream bis = new BufferedInputStream(fis);
BufferedOutputStream bos = new BufferedOutputStream(out);
response.setContentType("application/x-download");
response.setHeader( "Content-disposition","attachment;filename="+URLEncoder.encode(filesrc,"UTF-8"));
int byteRead = 0;
byte[] buffer = new byte[1024];
while ((byteRead = bis.read(buffer,0,1024))!=-1){
bos.write(buffer, 0, byteRead);
}
bos.flush();
fis.close();
bis.close();
out.close();
bos.close();
}
if(file.exists()){
file.delete();
}
} catch (IOException e) {
LOGGER.error(e.getMessage(), e);
}
}
/**
*
*通过URL 请求imguri文件
*
*/
public static void saveProductFileFromURL(String productId,String imguri){
FileOutputStream fos = null;
BufferedInputStream bis = null;
HttpURLConnection huc = null;
try {
URL url = new URL(imguri);
huc = (HttpURLConnection) url.openConnection();
huc.connect();
bis = new BufferedInputStream(huc.getInputStream());
File file = new File(productId);
if(!file.exists() || !file.isDirectory()){
file.mkdir();
}
fos = new FileOutputStream(file+"/"+FilenameUtils.getName(imguri));
byte[] bufbyte = new byte[1024];
int size = 0;
while ((size = bis.read(bufbyte) )!= -1){
fos.write(bufbyte,0,size);
}
fos.flush();
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
if(fos!=null)
fos.close();
if(bis!=null)
bis.close();
if(huc!=null)
huc.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
*使用后删除文件
*
*/
public static void delFileOrDirectory(String productId){
File files = new File(productId);
if(files.exists() && files.isDirectory()){
File[] listFiles = files.listFiles();
for (int i = 0; i < listFiles.length; i++) {
File file = listFiles[i];
if(file.isFile()){
file.delete();
}
}
}
files.delete();
}
//完事。看完评价。bug未测,目测没问题
/**
* 批量下载product图片
* @param request
* @param response
* @param productId
*/
@RequestMapping(value="/downBatchProductImage")
public void downBatchProductImage(HttpServletRequest request, HttpServletResponse response, Long productId){
String productZipFileName = productId.toString();
List<String> imguri = RemoteServiceSingleton.getInstance().getDealerProductService().findAllProdUrlByProductId(productId, "");
File directory = null;
try {
for (int i = 0; i < imguri.size(); i++) {
ProductAssistController.saveProductFileFromURL(productZipFileName, Constants.ND+imguri.get(i));
}
} catch (Exception e) {
LOGGER.error(e.getMessage(), e);
}
directory = new File(productZipFileName);
if(directory.isDirectory()){
File[] listFiles = directory.listFiles();
ZipOutputStream zos = null;
FileInputStream fis = null;
try {
zos = new ZipOutputStream(new FileOutputStream(productZipFileName+".zip"));
for (int i = 0; i < listFiles.length; i++) {
File file = listFiles[i];
fis = new FileInputStream(file);
zos.putNextEntry(new ZipEntry(file.getName()));
int len;
//读入需要下载的文件的内容,打包到zip文件
byte[] buffer = new byte[1024];
while((len = fis.read(buffer))>0) {
zos.write(buffer,0,len);
}
}
if(null != zos){
zos.flush();
zos.close();
}if(null != fis){
fis.close();
}
} catch (Exception e) {
LOGGER.error(e.getMessage(), e);
}finally{
ProductAssistController.delFileOrDirectory(productZipFileName);
}
}
OutputStream out = null;
try {
out = response.getOutputStream();
String filesrc = productZipFileName+".zip";
File file = new File(filesrc);
if(file.exists()){
InputStream fis = new FileInputStream(file);
BufferedInputStream bis = new BufferedInputStream(fis);
BufferedOutputStream bos = new BufferedOutputStream(out);
response.setContentType("application/x-download");
response.setHeader( "Content-disposition","attachment;filename="+URLEncoder.encode(filesrc,"UTF-8"));
int byteRead = 0;
byte[] buffer = new byte[1024];
while ((byteRead = bis.read(buffer,0,1024))!=-1){
bos.write(buffer, 0, byteRead);
}
bos.flush();
fis.close();
bis.close();
out.close();
bos.close();
}
if(file.exists()){
file.delete();
}
} catch (IOException e) {
LOGGER.error(e.getMessage(), e);
}
}
/**
*
*通过URL 请求imguri文件
*
*/
public static void saveProductFileFromURL(String productId,String imguri){
FileOutputStream fos = null;
BufferedInputStream bis = null;
HttpURLConnection huc = null;
try {
URL url = new URL(imguri);
huc = (HttpURLConnection) url.openConnection();
huc.connect();
bis = new BufferedInputStream(huc.getInputStream());
File file = new File(productId);
if(!file.exists() || !file.isDirectory()){
file.mkdir();
}
fos = new FileOutputStream(file+"/"+FilenameUtils.getName(imguri));
byte[] bufbyte = new byte[1024];
int size = 0;
while ((size = bis.read(bufbyte) )!= -1){
fos.write(bufbyte,0,size);
}
fos.flush();
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
if(fos!=null)
fos.close();
if(bis!=null)
bis.close();
if(huc!=null)
huc.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
*使用后删除文件
*
*/
public static void delFileOrDirectory(String productId){
File files = new File(productId);
if(files.exists() && files.isDirectory()){
File[] listFiles = files.listFiles();
for (int i = 0; i < listFiles.length; i++) {
File file = listFiles[i];
if(file.isFile()){
file.delete();
}
}
}
files.delete();
}
0 0
- springmvc 批量下载,
- springmvc批量文件打包成zip下载功能
- springmvc批量文件打包成zip下载功能
- springmvc批量文件打包成zip下载功能
- springmvc批量将文件打包成zip下载
- 批量下载
- SpringMVC 下载
- SpringMVC下载
- springMVC下载
- springmvc 批量删除
- springmvc Ajax批量删除
- springmvc实现批量删除
- springmvc+mybatis批量操作
- springmvc批量修改
- springmvc实现批量删除
- mybatis springmvc批量删除
- SSM SpringMVC 批量删除
- ftp批量下载 单个下载
- 黑马程序员——java基础---反射
- ajax发送请求,解决缓存问题
- 第三周项目5(5)-数组作数据成员
- netbeans双窗口显示编辑不同文件
- LeetCode Next Permutation
- springmvc 批量下载,
- UIViewController与xib文件是如何关联的
- 在驱动中增加异步通知的例子
- 每个程序员需掌握的20个代码命名小贴士
- freeSwitch安装步骤 for CentOS
- RTMP规范简单分析
- 理解迭代法和优化基础
- 【Tech-Android-Jni】Jni中基本方法(2)
- 【Java学习】泛型的安全性与可读性