不知道您有没有做过新闻管理软件,不知道对图片处理是不是用着很麻烦的方法呢?
本文将介绍一种方法,让您省时省力轻松完成图片问题.
1.问题原因:
我复制一篇新闻里面有新闻的图片,可是我想把这张图片改名上传到自己的空间上,一般的方法是将图片下载至本地,然后在例用上传组件上传至服务器,
2.解决方法:
/* * Created on 2003-1-17 * CopyRight by http://www.designac.org */ package org.DesignAC.bean; import java.io.*; import java.net.*; import org.DesignAC.util.Log.Logger; import org.DesignAC.util.ErrorMessage; import java.text.NumberFormat; /** * @author biggie * * Class Function:远程图片上传至服务器指定目录,指定更名 */ public class downloadPic { /** 日志 */ private Logger log=Logger.getInstance("downloadPic"); /** 错误信息bean*/ ErrorMessage ErrorMessage=null; /** 远程图片地址 */ private String picurl; /** 服务器相应该文件 */ private String savepath; /** 无参数构造函数 */ public downloadPic(){ } /** * 构造函数 * @param picurl 远程图片地址 * @param savapath 服务器相应该文件 */ public downloadPic(String picurl,String savepath){ this.picurl=picurl; this.savepath=savepath; NumberFormat nf = NumberFormat.getInstance(); nf.setMaximumIntegerDigits( } /** * 远程下载至服务器 * @return true上传成功,false上传失败 */ public boolean download(){ String fileurl=this.picurl; String savepath=this.savepath; try{ int httpStatusCode; URL url =new URL(fileurl); URLConnection conn = url.openConnection(); conn.connect(); HttpURLConnection httpconn =(HttpURLConnection)conn; httpStatusCode =httpconn.getResponseCode(); if(httpStatusCode!=HttpURLConnection.HTTP_OK){ file://HttpURLConnection return an error code log.error("Connect to "+fileurl+" failed,return code:"+httpStatusCode); System.out.println("Connect to "+fileurl+" failed,return code:"+httpStatusCode); return false; } int filelen = conn.getContentLength(); InputStream is = conn.getInputStream(); byte[] tmpbuf=new byte[1024]; File savefile =new File(savepath); if(!savefile.exists()) savefile.createNewFile(); FileOutputStream fos = new FileOutputStream(savefile); int readnum = 0; if(filelen<0)//for http://www.csdn.net/expert/topic/204/204361.shtm, conn.getContentLength() return -1. { while(readnum>-1) { readnum = is.read(tmpbuf); if(readnum>0) fos.write(tmpbuf,0,readnum); } } else { int readcount =0; while(readcount<filelen&&readnum!=-1) { readnum=is.read(tmpbuf); if(readnum>0) { fos.write(tmpbuf,0,readnum); readcount =readcount +readnum; } } if(readcount<filelen) { System.out.println("download error"); log.error("download error!"); is.close(); fos.close(); savefile.delete(); return false; } } fos.flush(); fos.close(); is.close(); } catch(Exception e) { e.printStackTrace(); return false; } return true; }
}

|