设为首页 收藏本站
查看: 1434|回复: 0

[经验分享] java图片处理并上传ftp

[复制链接]

尚未签到

发表于 2016-6-9 11:02:14 | 显示全部楼层 |阅读模式
在手机应用或者网站开发中,很多情况我们需要将图片或文件上传ftp服务器,应用时只需返回一个路径。
第一、如果没有现有的ftp服务器,可以在本机自行搭建一个测试服务器。
第二、如何连接服务器
      创建一个上传服务器类ftpUpload,首先定义ftp服务器的ip,用户的id,密码,和端口,然后创建实例,并将参数附上值,
public FtpUpload() throws IOException {         
this.ip=this.ip;     
this.userId=this.userId;     
this.pwd=this.pwd;
this.port=this.port; }   
第三、上传文件:通过ip和端口连接ftp服务器,验证用户名和密码,判断文件夹是否已经存在,指定工作目录,
       public boolean upMyFile(String fileName,InputStream ins){         
FTPClient ftpClient = new FTPClient();      
ftpClient.setControlEncoding("GBK");     
try {           
ftpClient.connect(ip, port);            
if (!ftpClient.login(userId, pwd)) {                 
System.out.println("系统登录不成功!");                 
}               
DateFormat df = new SimpleDateFormat("yyyyMMdd");            
String strDate=df.format(new Date());  
if (ftpClient.cwd(strDate) == 250) { // 若返回值为250,说明文件夹已经存在              
ftpClient.cwd(strDate); // 指定工作目录   
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
if (ftpClient.storeFile(fileName, ins)) {               
file=strDate+"/"+fileName;            
}else{               
return false;            
}            
ftpClient.logout();
} else {            
ftpClient.makeDirectory(strDate);               
ftpClient.cwd(strDate);         
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);            
if (ftpClient.storeFile(fileName, ins)) {               
file=strDate+"/"+fileName;            
}else{               
return false;            
}            
ftpClient.logout();            
}
} catch (SocketException e) {               
e.printStackTrace();               
return false;        
} catch (IOException e) {               
e.printStackTrace();               
return false;        
}
return true;  
}   
}

上传类已经写好,然后可以写一个测试程序处理图片并通过上面的类上传
当获得一个MultipartFile型的文件file时,将文件转换成byte数组,如果想把获得的图片大小变成固定的,只需给定相应的宽高
byte[] bytes = null;
int height = 600;
int width = 800
bytes = file.getBytes();
InputStream buffin = new ByteArrayInputStream(bytes);
BufferedImage img = ImageIO.read(buffin);

然后new一个上面的ftpUpload上传类,将图片转换成流的形式
FtpUpload ftpUpload=new FtpUpload();
BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_3BYTE_BGR);
image.getGraphics().drawImage(img,0,0, width, height, null);
java.io.ByteArrayOutputStream   output   =   new   java.io.ByteArrayOutputStream();
ImageIO.write(image,   "jpg",   output);
byte[]   buff   =   output.toByteArray();
InputStream   in   =   new ByteArrayInputStream(buff);

重新命名图片名称,可以以当前上传时间(yyyyMMddHHmmss)为名

DateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");            
String sysTime=df.format(new Date());   
ftpUpload.upMyFile(sysTime+".jpg",in);

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-228172-1-1.html 上篇帖子: ftp 文件上传 无法上传中文名称 下篇帖子: FTP-Putty 通过PSFTP.EXE 上传文件
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表