1.先打开Linix 打开终端
输入
[root@localhost 桌面]# cd …/
[root@localhost ~]# cd …/
[root@localhost /]# cd usr
[root@localhost usr]# ls
bin etc games include lib libexec local sbin share src tmp
[root@localhost usr]# cd local
[root@localhost local]# ls
bin etc games include lib libexec nginx sbin share src Trolltech
[root@localhost local]# cd nginx
[root@localhost nginx]# ls
client_body_temp fastcgi_temp logs sbin uwsgi_temp
conf html proxy_temp scgi_temp
[root@localhost nginx]# cd sbin
[root@localhost sbin]# ls
nginx
[root@localhost sbin]# ls
nginx
[root@localhost sbin]# ./nginx
[root@localhost sbin]#
2.获取网页Ip地址
[root@localhost 桌面]# cd …/
[root@localhost ~]# cd…/
bash: cd…/: 没有那个文件或目录
[root@localhost ~]# ifconfig
eth1 Link encap:Ethernet HWaddr 00:0C:29:E1:BE:25
inet addr:192.168.230.128 Bcast:192.168.230.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fee1:be25/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:27 errors:0 dropped:0 overruns:0 frame:0
TX packets:41 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:3067 (2.9 KiB) TX bytes:5999 (5.8 KiB)
Interrupt:19 Base address:0x2024
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:48 errors:0 dropped:0 overruns:0 frame:0
TX packets:48 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:3238 (3.1 KiB) TX bytes:3238 (3.1 KiB)
[root@localhost ~]# ^C
[root@localhost ~]#
说明成功了链接
在分布式上传有两种方法
第一种方法(原生):
foreknow-manager-web 里创建一个包 Junit test case类型 com.foreknow.test 类名TestFTP.java
package com.foreknow.test;
import static org.junit.Assert.*;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.SocketException;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.junit.Test;
import com.foreknow.common.util.FtpUtil;
public class TestFTP {
@Test
public void testFTP() {
try {
//创建FTPClinent对象
FTPClient ftpClient=new FTPClient();
//建立链接
ftpClient.connect("192.168.230.128");
//登录 参数 是 账号的密码neusoft,123
ftpClient.login("ftpuser", "输入你的密码");
//上传到远程服务器的路径
ftpClient.changeWorkingDirectory("/home/ftpuser/www/images");
//读取图片的文件 本地如果参数file 没有的话 自动创建
FileInputStream inputStream=new FileInputStream(new File("D:\\pic.............................................常用\\maxresdefault.jpg"));
//设置文件的格式(否则图片会花掉的)FTP.BINARY_FILE_TYPE 是个常亮 二进制
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
//上传文件 一个远程 一个本地的参数 远程的随便起
ftpClient.storeFile("banner_demo.jpg", inputStream);
//上面的IO流 就要释放资源 关闭资源
inputStream.close();
//退出登录
ftpClient.logout();
} catch (SocketException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//第二种方法 调用 工具包FtpUtil
@Test
public void testFTPUtil() throws FileNotFoundException{
FileInputStream inputStream=new FileInputStream(new File("D:\\pic.............................................常用\\maxresdefault.jpg"));
FtpUtil.uploadFile("192.168.230.128", 21, "ftpuser", "sunyong0305", "/home/ftpuser/www/images", "/2019/1/1", "hello333", inputStream);
}
}
右键方法名 在FTP软件是查看
第二种方法(使用工具包):
在foreknow-common 下 建包com.foreknow.common.util
FtpUtil.java
package com.foreknow.common.util;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;
/**
* ftp上传下载工具类
*/
public class FtpUtil {
/**
* Description: 向FTP服务器上传文件
* @param host FTP服务器hostname
* @param port FTP服务器端口
* @param username FTP登录账号
* @param password FTP登录密码
* @param basePath FTP服务器基础目录
* @param filePath FTP服务器文件存放路径。例如分日期存放:/2015/01/01。文件的路径为basePath+filePath
* @param filename 上传到FTP服务器上的文件名
* @param input 输入流
* @return 成功返回true,否则返回false
*/
public static boolean uploadFile(String host, int port, String username, String password, String basePath,
String filePath, String filename, InputStream input) {
boolean result = false;
FTPClient ftp = new FTPClient();
try {
int reply;
ftp.connect(host, port);// 连接FTP服务器
// 如果采用默认端口,可以使用ftp.connect(host)的方式直接连接FTP服务器
ftp.login(username, password);// 登录
reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
return result;
}
//切换到上传目录
if (!ftp.changeWorkingDirectory(basePath+filePath)) {
//如果目录不存在创建目录
String[] dirs = filePath.split("/");
String tempPath = basePath;
for (String dir : dirs) {
if (null == dir || "".equals(dir)) continue;
tempPath += "/" + dir;
if (!ftp.changeWorkingDirectory(tempPath)) {
if (!ftp.makeDirectory(tempPath)) {
return result;
} else {
ftp.changeWorkingDirectory(tempPath);
}
}
}
}
//设置上传文件的类型为二进制类型
ftp.setFileType(FTP.BINARY_FILE_TYPE);
//上传文件
if (!ftp.storeFile(filename, input)) {
return result;
}
input.close();
ftp.logout();
result = true;
} catch (IOException e) {
e.printStackTrace();
} finally {
if (ftp.isConnected()) {
try {
ftp.disconnect();
} catch (IOException ioe) {
}
}
}
return result;
}
/**
* Description: 从FTP服务器下载文件
* @param host FTP服务器hostname
* @param port FTP服务器端口
* @param username FTP登录账号
* @param password FTP登录密码
* @param remotePath FTP服务器上的相对路径
* @param fileName 要下载的文件名
* @param localPath 下载后保存到本地的路径
* @return
*/
public static boolean downloadFile(String host, int port, String username, String password, String remotePath,
String fileName, String localPath) {
boolean result = false;
FTPClient ftp = new FTPClient();
try {
int reply;
ftp.connect(host, port);
// 如果采用默认端口,可以使用ftp.connect(host)的方式直接连接FTP服务器
ftp.login(username, password);// 登录
reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
return result;
}
ftp.changeWorkingDirectory(remotePath);// 转移到FTP服务器目录
FTPFile[] fs = ftp.listFiles();
for (FTPFile ff : fs) {
if (ff.getName().equals(fileName)) {
File localFile = new File(localPath + "/" + ff.getName());
OutputStream is = new FileOutputStream(localFile);
ftp.retrieveFile(ff.getName(), is);
is.close();
}
}
ftp.logout();
result = true;
} catch (IOException e) {
e.printStackTrace();
} finally {
if (ftp.isConnected()) {
try {
ftp.disconnect();
} catch (IOException ioe) {
}
}
}
return result;
}
}
IDUtils.java
package com.foreknow.common.util;
import java.util.Random;
/**
* 各种id生成策略
*/
public class IDUtils {
/**
* 图片名生成
*/
public static String genImageName() {
//取当前时间的长整形值包含毫秒
long millis = System.currentTimeMillis();
//long millis = System.nanoTime();
//加上三位随机数
Random random = new Random();
int end3 = random.nextInt(999);
//如果不足三位前面补0
String str = millis + String.format("%03d", end3);
return str;
}
/**
* 商品id生成
*/
public static long genItemId() {
//取当前时间的长整形值包含毫秒
long millis = System.currentTimeMillis();
//long millis = System.nanoTime();
//加上两位随机数
Random random = new Random();
int end2 = random.nextInt(99);
//如果不足两位前面补0
String str = millis + String.format("%02d", end2);
long id = new Long(str);
return id;
}
public static void main(String[] args) {
for(int i=0;i< 100;i++)
System.out.println(genItemId());
}
}
JsonUtils.java
package com.foreknow.common.util;
import java.util.List;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.ObjectMapper;
/**
* 商城自定义响应结构
*/
public class JsonUtils {
// 定义jackson对象
private static final ObjectMapper MAPPER = new ObjectMapper();
/**
* 将对象转换成json字符串。
* Title: pojoToJson
* Description:
* @param data
* @return
*/
public static String objectToJson(Object data) {
try {
String string = MAPPER.writeValueAsString(data);
return string;
} catch (JsonProcessingException e) {
e.printStackTrace();
}
return null;
}
/**
* 将json结果集转化为对象
*
* @param jsonData json数据
* @param clazz 对象中的object类型
* @return
*/
public static <T> T jsonToPojo(String jsonData, Class<T> beanType) {
try {
T t = MAPPER.readValue(jsonData, beanType);
return t;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 将json数据转换成pojo对象list
* Title: jsonToList
* Description:
* @param jsonData
* @param beanType
* @return
*/
public static <T>List<T> jsonToList(String jsonData, Class<T> beanType) {
JavaType javaType = MAPPER.getTypeFactory().constructParametricType(List.class, beanType);
try {
List<T> list = MAPPER.readValue(jsonData, javaType);
return list;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
在test 中 调用工具包
//第二种方法 调用 工具包FtpUtil
@Test
public void testFTPUtil() throws FileNotFoundException{
FileInputStream inputStream=new FileInputStream(new File("D:\\pic.............................................常用\\maxresdefault.jpg"));
FtpUtil.uploadFile("192.168.230.128", 21, "ftpuser", "sunyong0305", "/home/ftpuser/www/images", "/2019/1/1", "hello333", inputStream);
}
}
在FTP软件查看
在网页上测试:
输入:http://192.168.230.128/2019/1/1/hello333.jpg
如果有图 说明图片已经上传成功