`
chengxuyuancsdn
  • 浏览: 7977 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

上传、下载压缩图片

    博客分类:
  • java
 
阅读更多
/**
	 * 
	 * @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;
	}	
分享到:
评论

相关推荐

    单张图片上传压缩

    而为了提高用户体验,减少网络传输时间和节省服务器存储空间,通常会对上传的图片进行压缩处理。本文将深入探讨“单张图片上传压缩”的相关知识点。 1. **图片格式与压缩原理** - 常见的图片格式有JPEG、PNG、GIF...

    上传并压缩图片文件

    "上传并压缩图片文件"这个主题涉及到两个关键的技术知识点:图片上传和图片压缩。下面将详细阐述这两个概念及其应用。 图片上传是将本地计算机上的图片文件通过网络发送到服务器的过程。这一过程通常由前端用户界面...

    plupload-2.1.2 js、html压缩图片上传图片神器,手机微信网页上传图片必备神器

    4. **图片压缩**:在上传前对图片进行压缩,减少网络传输的数据量,尤其在手机环境下,能够显著提升上传速度并节省流量。 5. **预览功能**:用户在上传前可以预览图片,增加了交互性和准确性。 6. **文件类型过滤*...

    java代码保存上传的文件_压缩图片

    "Java代码保存上传的文件_压缩图片" Java代码保存上传的文件_压缩图片 Java 代码保存上传的文件_压缩图片是指在 Java web 应用程序中,如何保存上传的文件,并对其进行压缩处理。本代码使用了 Spring 框架的 ...

    js图片压缩

    - 在Web应用中,动态生成缩略图时,可以先压缩图片,然后再进行尺寸裁剪。 - 在实时聊天或社交媒体应用中,压缩图片可以降低网络传输的数据量。 5. 性能优化: - 使用Web Workers进行图片处理,避免阻塞主线程,...

    jQuery图片压缩

    console.log('压缩图片开始'+result); }, 'oncompressEnd': function(result){ console.log('压缩图片结束'+result); $('#preview').append(result); $('#preview').find('img').addClass('preview'); }, '...

    node.js 实现图片 压缩,上传下载,以及base64的图片显示、上传和服务端接受

    该代码实现了node.js 配置服务器,网页上传压缩图片、显示base64 上传接受base64图片格式,该代码来源于博客:https://blog.csdn.net/zhangpengzp/article/details/86629097

    js压缩图片,js图片base64压缩上传

    本文将详细讨论如何使用JavaScript(js)来压缩图片,并将其转换为Base64编码进行上传。这一技术常用于前端开发,以提升用户体验并降低服务器压力。 首先,我们需要了解JavaScript中的Image对象。这是处理图片的...

    h5 图片压缩上传

    1. **Canvas**:HTML5的Canvas元素提供了一个图形绘制区域,我们可以利用其API进行图像处理,包括读取图片数据、压缩图片等操作。 2. **File API**:HTML5的File API允许我们在用户许可的情况下访问本地文件,包括...

    图片客户端压缩上传项目源码

    图片浏览器端压缩上传,flex技术实现图片浏览器端压缩上传

    vue图片等比例上传压缩

    在移动Web蓬勃发展的今天,有太多太多的应用需要让用户在移动Web上传图片文件了,正因如此,我们有些困难必须去攻克: 低网速下上传进度缓慢,用户体验差 高并发下,后台处理较大的上传文件压力大 或许有更多...

    压缩图片方式,压缩图片方式

    因此,了解如何有效地压缩图片变得至关重要。本文将详细介绍几种常见的图片压缩方式,包括软件工具的使用,以及不同平台如Mac、Windows上的操作方法。 1. **有损压缩与无损压缩** - **有损压缩**:这种压缩方式会...

    Java实现的上传并压缩图片功能【可等比例压缩或原尺寸压缩】

    Java实现的上传并压缩图片功能可以应用于各种场景,例如社交媒体、电商平台、图像分享平台等,用户可以上传图片,并对图片进行压缩,减少图片的大小,提高图片的上传和下载速度。 Java实现的上传并压缩图片功能...

    可按百分比,按分辨率批量压缩图片袖珍工具

    标题中的“可按百分比,按分辨率批量压缩图片袖珍工具”表明这是一款小巧而功能强大的软件,专门用于批量处理图像文件,以实现按比例或根据特定分辨率进行压缩。这样的工具在处理大量图片时非常实用,例如对于网页...

    WEB前端大图片压缩并上传例子

    5. **导出压缩图片**:调用`toDataURL()`方法,将Canvas上的内容转换为新的Data URL,这就是压缩后的图片。 6. **上传图片**:最后,将这个压缩后的Data URL作为formData的一部分,通过Ajax发送到服务器进行存储或...

    Android压缩图片到100K以下并保持不失真的高效方法

    该项目是通过私有apn与服务器进行交互的,联通的还好,但移动的速度实在太慢,客户在使用软件的过程中,由于上传的信息中可能包含多张图片,会经常出现上传图片失败的问题,为了解决这个问题,我们决定把照片压缩到...

    html纯前端压缩图片神器,js压缩图片保持原有像素,html图片压缩自定义大小

    "js压缩图片保持原有像素"意味着这个工具在压缩图片时,尽可能地保留原始图片的细节。它通过调整图片的位深度和压缩算法来减小文件大小,而不是简单地降低图片分辨率或尺寸。这确保了压缩后的图片质量仍然较高。 ...

    js图片压缩,不会担心图片因为压缩变形

    由于图片往往是网页加载速度的主要影响因素,因此有效地压缩图片可以显著提高页面加载速度,同时保持图片质量。"js图片压缩,不会担心图片因为压缩变形"这个标题表明我们将探讨一种能够保持图片比例的压缩方法,避免...

    图片上传压缩裁剪.zip

    - 图片压缩是为了减少图片的大小,以便更快地上传和下载。在JavaScript中,可以使用各种库,如photoClip,来实现图片的压缩。这些库通常会调整图片的尺寸、质量和格式,如转换为JPEG以降低质量,从而达到减小文件...

    移动端图片压缩上传插件.zip

    在移动端开发中,图片压缩和上传是常见的需求,特别是在用户需要上传照片的场景,如社交媒体、电子商务或在线表单。为了提高用户体验并减少服务器存储空间,开发者通常会使用专门的插件来处理这一过程。"移动端图片...

Global site tag (gtag.js) - Google Analytics