阿里云Linux服务器安装配置ftp及java代码实现上传服务器全教程

1.首先使用连接工具连接到云服务器,这里我是使用PuTTY。
端口号22,SSH连接,open进行连接。
在这里插入图片描述

2.输入命令行下载安装vsftpd和ftp。
# yum install vsftpd -y
# yum install ftp
3.进入vsftpd.conf 配置文件编辑状态
# vi /etc/vsftpd/vsftpd.conf
/是搜索键,i是修改键,esc是取消键(确认键),修改完成点esc,然后输入 :wq 回车退出。

状态如图
在这里插入图片描述
在这里插入图片描述

4.启动FTP服务
service vsftpd start
5.查看FTP服务是否运行中
service vsftpd status

在这里插入图片描述

6.接下来新建一个用户我这里叫xiha:
useradd xiha
然后设置密码输入2次
passwd xiha

在这里插入图片描述

7.这里需要注意,需要在阿里云服务器页面,安全组规则,手动添加开放的端口号,ftp一般是 21 或 20 ,我这里有进行添加,要不然会连接不上,报错连接超时。
在这里插入图片描述

8.可以测试打开一个cmd窗口,输入ftp XXX.XX.XX.XXX
使用创建用户进行登录能否成功。
在这里插入图片描述

接下来就测试使用代码上传到ftp服务器上。

写一个简陋的上传页面

<!DOCTYPE html>
<html>
	<head>
	<title>uploadimg.html</title>
	
	<meta name="keywords" content="keywords1,keywords2,keywords3"></meta>
	<meta http-equiv="Content-Type" content="text/html;" charset="UTF-8"/>
	
	</head>

	<body>
		<form enctype="multipart/form-data" method="post" action="/upload">
			文件:<input type="file" name="head_img"/>
			姓名:<input type="text" name="name"/>
			<input type="submit" value="上传"/>
		</form>	
	</body>

</html>

使用jar包

	<dependency>
	    <groupId>commons-net</groupId>
	    <artifactId>commons-net</artifactId>
	    <version>3.1</version>
	</dependency>
import java.io.IOException;
import java.io.InputStream;
import java.net.SocketException;
import java.util.UUID;

import javax.servlet.http.HttpServletRequest;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;


import net.xdclass.demo.domian.JsonDate;

@Controller
@PropertySource({"classpath:application.properties"})
public class FileController {

private static final String filePath = "\\root\\home\\xiha\\";
	
	@RequestMapping(value="/upload")
	@ResponseBody
	public JsonDate upload(@RequestParam("head_img") MultipartFile file,HttpServletRequest request) throws IOException {
		
	
		System.out.println("配置注入打印,文件路径为:"+filePath);
		
		String name = request.getParameter("name");
		System.out.println("用户名:"+name);
		
		String fileName = file.getOriginalFilename();
		System.out.println("上传文件名称:"+fileName);
		
		String suffixName = fileName.substring(fileName.lastIndexOf("."));
		System.out.println("上传的后缀:"+suffixName);
		
		fileName = fileName+UUID.randomUUID()+suffixName;
		System.out.println("转换后名称:"+ fileName);
		
		
		//创建ftp客户端
		FTPClient ftpClient = new FTPClient();
		ftpClient.setControlEncoding("GBK");
		String hostname = "XXX.XX.XX.XXX";
		int port = 21;
		String username = "xiha";
		String password = "XXXXX";
		
		try {
			//链接ftp服务器
			ftpClient.connect(hostname, port);
			//登录ftp
			ftpClient.login(username, password);
			int  reply = ftpClient.getReplyCode();  
			System.out.println(reply);
			//如果reply返回230就算成功了,如果返回530密码用户名错误或当前用户无权限下面有详细的解释。
			if (!FTPReply.isPositiveCompletion(reply)) {  
	            	ftpClient.disconnect();  
	                return new JsonDate(-2, "接上ftl失败");  
	            }  
		        ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
				
	            ftpClient.makeDirectory("path");//在root目录下创建文件夹
	            boolean b = ftpClient.changeWorkingDirectory(filePath); 
	            
	            System.out.println("转换目录结果2:"+b);

	            
	            InputStream input = file.getInputStream();
	            ftpClient.storeFile(fileName,input);
	            
	            input.close();  
	            ftpClient.logout();  
	            return new JsonDate(1, "上传成功");
			
		} catch (SocketException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}finally 
		{  
            if (ftpClient.isConnected())
            {  
                try 
                {  
                	ftpClient.disconnect();  
                } catch (IOException ioe) 
                {  
					ioe.printStackTrace();
                }  
            } 

		}
	    	

		return new JsonDate(-1, "上传失败");
		
	}
}

配置文件可以对上传文件大小进行配,不做配置只能上传小文件
在这里插入图片描述

上传成功后文件会存在新建用户目录下,我新建得用户是xiha,文件就在 cd /home/xiha 目录下。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值