将图片上传到FTP服务器
【FTP服务器】
介绍一个 ftp客户端工具:iis7服务器管理工具
IIs7服务器管理工具可以批量管理ftp站点,同时具备定时上传下载的功能。
作为服务器集成管理器,它最优秀的功能就是批量管理windows与linux系统服务器、vps。能极大的提高站长及服务器运维人员工作效率。同时iis7服务器管理工具还是vnc客户端,服务器真正实现了一站式管理,可谓是非常方便。
下载地址:http://yczm.iis7.com/?tscc
♦ FTP是什么?
FTP是File Transfer Protocol(文件传输协议)的英文简称,用于Internet上的控制文件的双向传输。同时,他也是一个应用程序,基于不同的操作系统有不同的FTP应用程序,而所有的这些应用程序都遵循同一种协议以传输文件。在FTP的使用当中,用户经常遇到两个概念,下载和上传,下载就是从远程主机拷贝文件至自己的计算机上,上传文件就是将文件从自己的计算机中拷贝到远程主机上。
♦ FTP服务器是什么?
简单的说,支持FTP协议的服务器就是FTP服务器。FTP是一个客户机/服务器系统。用户通过一个支持FTP协议的客户机程序,连接到在远程主机上的FTP服务器程序。用户通过客户机程序向服务器程序发出命令,服务器程序执行用户所发出的命令,并将执行的结果返回到客户机。
♦ 匿名FTP
使用FTP时必须首先登陆,在远程主机上获得相应的权限以后,方可下载或上传文件。也就是当有用户ID和口令的时候,才能传送文件。这违背了Internet的开放性,Internet上的FTP主机何止千万,不可能要求每个用户再每一台主机上都拥有账号。匿名FTP就是为解决这个问题产生的。
通过FTP程序连接匿名FTP主机的方式同连接普通FTP主机的方式差不多,只是在要求提供用户标识ID时必须输入anonymous,该用户ID的口令可以是任意的字符串。习惯上,用自己的E-mail地址作为口令,使系统维护程序能够记录下来谁在存取这些文件。
当远程主机提供匿名FTP服务时,会指定某些目录向公众开放,允许匿名存取。系统中的其余目录则处于隐匿状态。作为一种安全措施,大多数匿名FTP主机都允许用户从其下载文件,而不允许用户向其上传文件。
♦FTP服务器的作用是什么?
FTP的主要作用,就是让用户连接上一个远程计算机(这些计算机上运行着FTP服务器程序)察看远程计算机有哪些文件,然后把文件从远程计算机上拷到本地计算机,或把本地计算机的文件送到远程计算机去。用户可以通过它把自己的PC机与世界各地所有运行FTP协议的服务器相连,访问服务器上的大量程序和信息。
♦为什么要有FTP服务器?
一般来说,用户联网的首要目的就是实现信息共享,文件传输是信息共享非常重要的一个内容之一。Internet上早期实现传输文件,并不是一件容易的事,我们知道 Internet是一个非常复杂的计算机环境,有PC,有工作站,有MAC,有大型机,据统计连接在Internet上的计算机已有上千万台,而这些计算机可能运行不同的操作系统,有运行Unix的服务器,也有运行Dos、Windows的PC机和运行MacOS的苹果机等等,而各种操作系统之间的文件交流问题,需要建立一个统一的文件传输协议,这就是所谓的FTP。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议,这样用户就可以把自己的文件传送给别人,或者从其它的用户环境中获得文件。
♦传输文件的步骤
1在本地电脑上登陆到国际互联网,
2搜索有文件共享主机或者个人电脑(一般有专门的FTP服务器网站上公布的,上面有进入该主机或个人电脑的名称,口令和路径)
3当与远程主机或者对方的个人电脑建立连接后,用对方提供的用户名和口令登陆到该主机或对方的个人电脑.
4在远程主机或对方的个人电脑登陆成功后,就可以上传你想跟别人分享的东东或者下载别人授权共享的东东(这里的东东是指能放到电脑里去又能在显示屏上看到的东东)
5完成工作后关闭FTP下载软件,切断连接.
为了实现文件传输,用户还要运行专门的文件传输程序,比如网际快车就有这方面的功能,其它还有很多专门的FTP传输软件,各有各的特色.
【将图片上传到FTP服务器代码】
1、配置文件
#FTP
FTP_URL=172.16
FTP_USERNAME=afcp
FTP_PASSWORD=123
FTP_PATH=F:/ftp
FTP_PORT=21
2、工具类
package com.cn.zhongcai.util;import java.io.IOException;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Properties;import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;public class Ftp{static SimpleDateFormat dfm = new SimpleDateFormat("yyyy-MM-dd");//设置日期格式/*** 获取配置文件中的配置* * @return*/public static Map<String, String> findProperties() {Map<String, String> map = new HashMap<String, String>();Properties prop = new Properties();try {InputStream inStream = Ftp.class.getClassLoader().getResourceAsStream("reader.properties");prop.load(inStream); /// 加载属性列表Iterator<String> it = prop.stringPropertyNames().iterator();while (it.hasNext()) {String key = it.next();map.put(key, prop.getProperty(key));}inStream.close();} catch (Exception e) {System.out.println(e);}return map;}/** * Description: 向FTP服务器上传文件 * @param filename 上传到FTP服务器上的文件名(图片的名字) * @param catalog 模块目录名字(功能模块名称) * @param input 输入流(文件流) * @return 返回路径*/ public static String uploadFile(String filename, InputStream input,String catalog) {Map<String, String> map = findProperties();String url = map.get("FTP_URL");//IP地址String username = map.get("FTP_USERNAME");//用户名String password = map.get("FTP_PASSWORD");//密码String basePath = map.get("FTP_PATH");//路径String por = map.get("FTP_PORT");//端口号String filePath = dfm.format(new Date());//当前时间int port = Integer.parseInt(por);String tempPath = ""; //保存图片进入的路径String path = "";//返回全路径FTPClient ftp = new FTPClient(); try { int reply; ftp.connect(url, port);// 连接FTP服务器 // 如果采用默认端口,可以使用ftp.connect(host)的方式直接连接FTP服务器 ftp.login(username, password);// 登录 //设置上传文件的类型为二进制类型 ftp.setFileType(FTP.BINARY_FILE_TYPE);reply = ftp.getReplyCode(); if (!FTPReply.isPositiveCompletion(reply)) { ftp.disconnect(); return tempPath; }//切换到上传目录 if (!ftp.changeWorkingDirectory(catalog)) {//判断是否有模块目录//创建模块文件夹String[] mkds1 = catalog.split("/"); for(int i =0 ;i<mkds1.length;i++){ if(mkds1[i]!=null && mkds1[i]!=""){ ftp.makeDirectory(mkds1[i]);//添加目录 }ftp.changeWorkingDirectory(mkds1[i]); //添加完目录后 必须进入目录 才能在创建目录} if(!ftp.changeWorkingDirectory(filePath)) {//进入模块目录后判断是否有日期目录String[] mkds = filePath.split("/"); for(int y =0 ;y<mkds.length;y++){ if(mkds[y]!=null && mkds[y]!=""){ ftp.makeDirectory(mkds[y]); } ftp.changeWorkingDirectory(mkds[y]); //添加完目录后 必须进入目录 才能在创建目录} }}else if(!ftp.changeWorkingDirectory(filePath)){//如果有进入目录创建日期目录String[] mkds = filePath.split("/"); for(int i =0 ;i<mkds.length;i++){ if(mkds[i]!=null && mkds[i]!=""){ ftp.makeDirectory(mkds[i]); }ftp.changeWorkingDirectory(mkds[i]); //添加完目录后 必须进入目录 才能在创建目录} }tempPath = basePath+"/"+catalog+"/"+filePath;ftp.changeWorkingDirectory(tempPath);ftp.storeFile(filename, input);//存入图片input.close(); ftp.logout();path = "http://"+url+":8001"+"/"+catalog+"/"+filePath+"/"+filename;} catch (IOException e) { e.printStackTrace(); } finally { if (ftp.isConnected()) { try { ftp.disconnect(); } catch (IOException ioe) { } } } return path; }
}
3、上传图片
//提交检查项的反馈/*** * @param TaskMainID 任务ID,非主键* @param contentID 反馈项ID* @param score 分数* @param detail 说明* @param userID 管理员ID* @param files 图片* @param request * @return*/@ResponseBody@RequestMapping("/addContentFeedBack")public Map<String,Object> addContent(@RequestParam(value="TaskID") String TaskMainID,@RequestParam(value="contentID") String contentID,@RequestParam(value="score") Double score,@RequestParam(value="detail") String detail,@RequestParam(value="userID") String userID,@RequestParam(value="files",required=false) CommonsMultipartFile[] files,HttpServletRequest request){String userName="";String timeDate="";String idString="";try {//反馈主键idString=BaseUtil.getId();userName=productService.findAdminNameByID(userID);SimpleDateFormat timeFomrate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");timeDate=timeFomrate.format(new java.util.Date());//提交检查项的反馈adminService.addContentFeedBack(idString,TaskMainID,contentID,score,detail,userName,timeDate);} catch (Exception e) {System.out.println(e);return AjaxReturnUtils.ReturnFalse("操作失败");}//*********************************************//将图片信息存入ftp服务器,并将地址存到设备报修图片表if (files!=null) {InputStream input;String filename;String catalog="app_admin";String path;try {for (int i = 0; i < files.length; i++) {input = files[i].getInputStream();filename = files[i].getOriginalFilename();//给她传参数,上传到ftp服务器,返回地址。path=Ftp.uploadFile(filename, input, catalog);try {//存到数据库中,把检查项反馈的照片String idString1=BaseUtil.getId();//照片表IDadminService.addContentFeedBackImage(idString1,idString,path,userName,timeDate);System.out.println(path);} catch (Exception e) {System.out.println(e);return AjaxReturnUtils.ReturnFalse("操作失败");}}} catch (IOException e) {e.printStackTrace();}}//*********************************************return AjaxReturnUtils.Return("操作成功");}
注意这里用到了:CommonsMultipartFile[]
需要在配置文件(springMVC.xml)里配一下:
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="defaultEncoding" value="utf-8"></property> <property name="maxUploadSize" value="10485760000"></property><!-- 最大上传文件大小 --> <property name="maxInMemorySize" value="10960"></property> </bean>
小结:
对比FTP服务器和FastDFS,FastDFS的优点就是在于它的:冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。分目录存储和由服务器分配文件名 的情境下使用比较合理。在选择那种方式进行文件存储时,不要盲目贪大,结合实际情况才可以。
另外还涉及到其他的文件传输方式的对比:请点击。
将图片上传到FTP服务器相关推荐
- moba上传文件到服务器,图片上传到远程服务器上的方法
图片上传到远程服务器上的方法 内容精选 换一换 将文件上传至Windows云服务器一般会采用MSTSC远程桌面连接的方式.本节为您介绍本地Windows计算机通过远程桌面连接,上传文件至Windows ...
- 解决:百度编辑器UEditor,怎么将图片保存到图片服务器,或者上传到ftp服务器的问题(如果你正在用UE,这篇文章值得你看下)
解决:百度编辑器UEditor,怎么将图片保存到图片服务器,或者上传到ftp服务器的问题(如果你正在用UE,这篇文章值得你看下) 参考文章: (1)解决:百度编辑器UEditor,怎么将图片保存到图片 ...
- 通过分布式把本地图片上传到FTP(1)
1.先打开Linix 打开终端 输入 [root@localhost 桌面]# cd -/ [root@localhost ~]# cd -/ [root@localhost /]# cd usr [ ...
- es+ftp服务器传文件怎么那么慢,es本地上传文件ftp服务器
es本地上传文件ftp服务器 内容精选 换一换 上传的文件和上传的文件夹中包含的文件支持的格式请参见支持的文件格式.文件上传:从本地上传:在Projects Explorer视图中选中一个文件夹,依次 ...
- 将文件上传至ftp服务器,FTP文件上传工具类,将文件上传至服务器指定目录
将文件上传至ftp服务器,传入File对象,将文件上传至ftp服务器 需要配置修改的点: 1. 服务器ip端口(服务器ip 端口22/21). 2. 服务器账号密码(服务器登录用户名密码). 3. 上 ...
- java ftp上传文件 linux_Java实现把文件上传至ftp服务器
用Java实现ftp文件上传.我使用的是commons-net-1.4.1.zip.其中包含了众多的java网络编程的工具包. 1 把commons-net-1.4.1.jar包加载到项目工程中去. ...
- python 实现统计ftp服务器指定目录下文件夹数目、文件数目及所有文件大小 本次主要为满足应用方核对上传到ftp服务器的文件是否缺漏。 主要要求:指定目录下,文件夹数目/文件数目/所有文件大小
python 实现统计ftp服务器指定目录下文件夹数目.文件数目及所有文件大小 本次主要为满足应用方核对上传到ftp服务器的文件是否缺漏. 主要要求:指定目录下,文件夹数目/文件数目/所有文件大小,类 ...
- 解决,文件上传到 ftp 服务器,中文出现乱码问题
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 上传到 ftp 服务器,中文出现乱码解决,之前文件名 " 网关信息 " 始终不 ...
- http文件上传到web服务器,上传到ftp服务器
前期准备: ftp:服务器的配置.(为ftp上传使用). 注意: 1.要是你测试用,ftp就在你自己开发的机器上配置,一定别忘了要先创建用户.且该用户一定要有可读写的权限!要不然会出现ftp 530错 ...
最新文章
- Ubuntu16下编译安装Open Babel2.4.1和python绑定
- 一名优秀的初创企业员工怎么做好工作计划
- HubSpot company数据在UI上的展示和通过API方式进行获取
- 二级c语言作答文件不存在,全国计算机等级考试二级C语言上机考试题库及答案...
- 去除桌面图标的小箭头
- MySQL初识-架构-安装-初始化-连接-管理工具-数据文件
- Redis 面试题汇总
- Bootstrap创建输入框组
- ensure函数_webpack的require.ensure()
- promise的理解和应用
- JS 回车提交,兼容IE、火狐、Opera、Chrome、Safari
- 数据结构之单链表的整表创建头插法
- linux安装openssl、swoole等扩展的具体步骤
- python的输出语句_python 中简单的输出语句
- 关于各种考勤打卡软件破解的思路和比较
- win10家庭中文版和专业版的区别
- 设置虚拟机dns服务器域名,域名服务器DNS的设置实验
- 理解LSTM网络(Understanding LSTM Networks)原文与翻译
- POJ 有关动态规划的题目
- C++ 算术基本定理