ftp+nginx+inputfile上传备忘

本文详细介绍了如何在Linux环境下安装配置VSFTPD服务,并通过Nginx实现文件的web访问。同时提供了使用Java进行FTP文件上传的具体实现步骤与代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载地址:http://blog.youkuaiyun.com/a1369508468/article/details/62219436

//安装ftp

1.安装vsftpd

    yum -y install vsftpd

2. 配置vsftpd,vsftpd默认安装目录为/etc/vsftpd

vi /etc/vsftpd/vsftpd.conf
//允许匿名登录访问改为NO
anonymous_enable=NO

3. 创建ftp用户

//设置该用户不能登录 且目录为/usr/local/image 用户名为test
useradd -s /sbin/nologin -d /usr/local/image test
//设置密码
passwd test

4. 修改selinux

vi /etc/selinux/config
设置SELINUX=disabled

5. 修改

1)查看getsebool -a | grep ftp

2)修改
setsebool -P ftpd_full_access on
setsebool -P tftp_home_dir on
6. 开启端口
firewall-cmd --add-port=21/tcp

7. 启动vsftpd

service vsftpd start

8. 测试连接 
这里写图片描述

//配置nginx

在/usr/local/nginx/conf/目录下的nginx.conf里

在头部添加

user root;

server{
                listen 80;
                server_name localhost;
                charset utf-8;
                location /{
                        root /usr/local/image/;
                        index index.html index.htm index.jsp;
                }
        }

//java

1.添加如下两个包

commons-net-1.4.1.jar
commons-fileupload-1.2.1.jar
在pom.xml里

  <dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.2.1</version>
</dependency>
<dependency>
    <groupId>commons-net</groupId>
    <artifactId>commons-net</artifactId>
    <version>1.4.1</version>
</dependency>

2.后台代码

//上传

@RequestMapping(value = "/ftpUpload",method = RequestMethod.POST)

@ResponseBody

public Map<Object,String> upload(String userid,MultipartFile file,HttpSession session) throws Exception{

final Map<Object,String> map = new HashMap<Object, String>(); //取出Session验证

User user = (User) session.getAttribute("loginUser");

if(user == null && "".equals(user)){

map.put("status","300");

map.put("message","为检测到登录信息!");

return map;

}else{

FTPClient ftp =new FTPClient();

int reply;//用来接收响应码

String hostname ="192.168.127.128";//ftp的IP地址

String username ="test";//ftp用户名

String password ="test";//ftp密码

int port = 21;//端口

ftp.connect(hostname, port);

ftp.login(username, password);

reply = ftp.getReplyCode();

//System.out.println("响应码:"+reply);

if(!(FTPReply.isPositiveCompletion(reply))){

map.put("message","FTP连接错误");

return map;

}

SimpleDateFormat sdf =new SimpleDateFormat("yyyyMMdd");//取当前日期作为文件夹

String dateFile = sdf.format(new Date()); //System.out.println("格式化后的date:"+dateFile);

//生成随机文件名 String fileName = UUID.randomUUID()+".jpg";

//System.out.println("文件名:"+fileName);

//拼接上传的路径

String uploadPath ="uploadImage/"+dateFile+"/"+fileName;

//System.out.println("上传的路径:"+uploadPath);

//创建文件夹 必须一层一层创建

ftp.makeDirectory("uploadImage");

ftp.makeDirectory("uploadImage"+"/"+dateFile);

ftp.enterLocalPassiveMode();//需要加上这一句,要不然ftp.storeFile有可能在正常情况下报false

if(!(ftp.changeWorkingDirectory(uploadPath))){

ftp.setFileType(FTPClient.BINARY_FILE_TYPE);

if(ftp.storeFile(uploadPath, file.getInputStream())){

//上传成功将数据存到数据库

UserImage userImage =new UserImage();

userImage.setImageUrl(uploadPath);

userImage.setUserId(user.getId());

int row = userImageService.insertUserImage(userImage);

if(row > 0){

map.put("status","200");

map.put("message","上传成功!");

//System.out.println("上传成功!");

}else{

map.put("status","300");

map.put("message","上传失败!");

//System.out.println("上传失败");

}

}else{

map.put("status","300");

map.put("message","上传失败!");

//System.out.println("上传失败");

}

file.getInputStream().close();

ftp.logout();

}

}

return map;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值