当前位置:首页 > 开发 > 编程语言 > 编程 > 正文

上传、下载压缩图片

发表于: 2014-08-09   作者:chengxuyuancsdn   来源:转载   浏览:
摘要: /** * * @param uploadImage --本地路径(tomacat路径) * @param serverDir --服务器路径 * @param imageType --文件或图片类型 * 此方法可以上传文件或图片.txt,.jpg,.gif等 */ public void upload(String uploadImage,Str
/**
	 * 
	 * @param uploadImage --本地路径(tomacat路径)
	 * @param serverDir   --服务器路径
	 * @param imageType   --文件或图片类型
	 * 此方法可以上传文件或图片.txt,.jpg,.gif等
	 */
	public void upload(String uploadImage,String serverDir,String imageType){
		FileInputStream fis=null;
		FileOutputStream fos=null;
		
		//服务器路径
		File serverFile=new File(serverDir);
		if(!serverFile.exists()){
			serverFile.mkdir();
		}
		String serverPath=separator+BbsUtil.getCurrentMonth()+imageType;
		serverFile=new File(serverDir+serverPath);
		try {
//				if(!serverFile.exists()){
//						serverFile.createNewFile();
//				}	
				fis=new FileInputStream(new File(uploadImage));
				fos=new FileOutputStream(serverFile);
				byte[] buffer = new byte[1024];
				int len = 0;
					while ((len = fis.read(buffer)) > 0) {
						fos.write(buffer, 0, len);
					}
					fos.flush();
		} catch (Exception e) {
				e.printStackTrace();
		}finally{
				try {
					fos.close();
					fis.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
		}
	}
	/**
	 * 
	 * @param path 本地路径
	 * @param serverDir  服务器目录
	 * @param serverFile 服务器文件
	 * @param smallSize  文件大小
	 * @param middleSize  。。。
	 * @param maxSize     。。。
	 * @return
	 */
	public boolean compressImage(File path,String serverDir,String serverFile,String smallSize, String middleSize,String maxSize){
		String fileName=path.getName();
		String msg="";
		if(!path.canRead()){
			msg="图片"+fileName+"不可读!";
			throw new NullPointerException(msg);
		}
		File serverPathFile=new File(serverDir);
		if(!serverPathFile.exists()){
			serverPathFile.mkdir();
		}
		
		FileOutputStream out = null;// 文件输出流
		int width=0;
		int height=0;
		BufferedImage tag=null;
		try{
				/* ============= 中图 处理 ==================  */
				// 建立输出流
				out = new FileOutputStream(serverDir+separator+serverFile );
				out.flush();
				// 依照固定大小画图区域300*300
				width = Integer.parseInt(middleSize);
				height = width;
				Image src = javax.imageio.ImageIO.read(path);
				tag = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
				tag.getGraphics().drawImage(src, 0, 0, width, height, null);
				// 画图操作
				JPEGCodec.createJPEGEncoder(out).encode(tag);
				out.close();
		}catch(Exception e){
			e.printStackTrace();
		}
		return true;
	}
	public String getImageType(String path){
		if(path.lastIndexOf(".")==-1){
			new NullPointerException("上传文档格式不正确!");
		}
		String imageType=path.substring(path.lastIndexOf("."),path.length());
		return imageType;
	}
///////////////////////////下载功能、、、、、、、、、、、、、、、、、
	public String  downloadFile(){
		String filename = getHttpServletRequest().getParameter("filename");//"1a.txt";
		String filepath = getHttpServletRequest().getParameter("filepath");//"d:\\";
		try {
			filename=new String(filename.getBytes("ISO8859-1"),"utf-8").replaceAll("%20", " ");
			filepath=new String(filepath.getBytes("iso8859-1"),"utf-8").replaceAll("%20", " ");
		} catch (UnsupportedEncodingException e1) {
			e1.printStackTrace();
		}
		try {
			if (filename == null || filepath == null || "".equals(filename) || "".equals(filepath)) {
				System.out.println("找不到要下载的文件!");
			} else {
				String fullpath = filepath +File.separator+filename;
				File file = new File(fullpath);
				if (file == null || !file.exists()) {
					System.out.println("找不到要下载的文件!");
				} else {	
					
					getHttpServletResponse().setContentType("application/octet-stream");
					//解决中文乱码\不直接打开文件
					getHttpServletResponse().setHeader("Content-Disposition", "attachment;filename = " + new String(filename.getBytes("gb2312"),"ISO8859-1" ));
					BufferedInputStream input = new BufferedInputStream(new FileInputStream(fullpath));
					byte buffBytes[] = new byte[1024];
					int allLength = 0;
					System.out.println("下载文件路径:" + fullpath);
					System.out.println("开始下载");
					OutputStream os = getHttpServletResponse().getOutputStream();
					System.out.println("获得流之前");
					int read = 0;
					while ((read = input.read(buffBytes)) != -1) {
						allLength += read;
						os.write(buffBytes, 0, read);
					}
					System.out.println("获得流之后:" + allLength);
					os.flush();
					os.close();
					input.close();
					System.out.println("正常关闭文件流");
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
			
		}
		return null;
	}	

上传、下载压缩图片

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
前段时间按照公司要求做了一个Flex多图片压缩上传组件,使网站实现了图片的快速上传与分享,提高了
转自:http://my.oschina.net/eatsuger/blog/85893 前段时间按照公司要求做了一个Flex多图片压缩上
一、简介 图片的压缩与上传,是APP里一个很常用的功能。我们来年看 ChiTuStore 是怎样做的。相关文
图片作为超级吃流量的东东,如何避免它重复下载和占用大量内存打开图片呢?如何避免图片本地没有正
CKEditor 3.x配置说明 一、基本使用: 1、所需文件架包 A. Ckeditor基本文件包,比如:ckeditor_3.6
摘要 iOS调用相机,iOS调用相册,保存至应用程序沙盒,高保真压缩图片,并有点击放大预览,再次点击
有时我们可以看到,图片往往被提交到服务器端,这里我通过XFire框架来实现远程上传以及下载图片的功
开发环境 tomcat8, eclipse+maven,dojo1.9 Maven项目 首先需要生成一个webapp的maven项目。本次开发
编辑器加+图片自动上传并且更新编辑器图片的URL成功完例! kindeditor/ckeditor+C#+AJAX完成的!现在
如题,简单记录一下这个问题的解决办法,导致问题的核心原因是:ajaxfileupload不支持响应头Content
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号