上传下载文件实例(vsftp服务器+nginx)

页面(上传+下载)

<form action="/pic/upload" enctype="multipart/form-data" method="post">

<input type="text" name="username"><br>

<input type="password" name="password"><br>

<input type="file" name="pic"><br>

<input type="submit" value="提交">

</form>

写实体类(pojo)

public class User {

private Integer uid;

private String username;

private String password;

private String picture;}}

写mapper接口

public interface UserMapper {

int insert(User record);

List<User> select();

}

写mapper.xml

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >

<mapper namespace="com.example.dao.UserMapper">

<insert id="insert" parameterType="User">

insert into imageupload(username,password,picture) values

(#{username,jdbcType=CHAR},#{password,jdbcType=CHAR},#{picture,jdbcType=CHAR})

</insert>

<select id="select" resultMap="User">

select * from imageupload

</select>

</mapper>

 

写UserService

public interface UserService {

public void insertUser(User user);

public List<User> selectUser();

}

写UserServiceImpl

@Service

public class UserServiceImpl implements UserService{

@Autowired(required=true)

private UserMapper userMapper;

@Override

public void insertUser(User user) {

userMapper.insert(user);

}

@Override

public List<User> selectUser() {

return userMapper.select();

}

}

写工具类IDUtils(用来生成文件名)

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;

}

}

写操作文件上传下载类FtpUtils

public class FtpUtils {

/**

* Description:向FTP服务器上传文件

* @param host FTP服务器ip

* @param port FTP服务器端口

* @param username FTP登录账号

* @param password FTP登录密码

* @param basePath FTP服务器基础目录,/home/ftpuser/images

* @param filePath FTP服务器文件存放路径。例如分日期存放:、2018/05/28.文件的路径为basePath+filePath

* @param fileName 上传到F服务器上的文件名

* @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();//返回最后一个FTP应答的应答代码的整数值。

System.out.println("reply="+reply);

if(!FTPReply.isPositiveCompletion(reply)) {//如果应答代码是一个正完成响应(以2开头的230),则为True;如果不是,则为false。

ftp.disconnect();

return result;

}

if(!ftp.changeWorkingDirectory(basePath+fileName)) {//如果目录不存在的话就创建目录

String[] dirs=filePath.split("/");

String tempPath=basePath;///home/ftpuser/images

for(String dir:dirs) {

if(null==dir||"".equals(dir)) {

continue;

}

tempPath+=""+dir;

if(!ftp.changeWorkingDirectory(tempPath)) {//如果更改FTP会话的当前工作目录失败

if(!ftp.makeDirectory(tempPath)) {//如果创建一个新的子目录失败的话。

return result;//返回false

}else {

ftp.changeWorkingDirectory(tempPath);//如果创建成功则更改FTP会话的当前工作目录

}

}

}//整合for循环是为了

}//整个if是为了创建设置的目录

//设置为被动模式

ftp.enterLocalPassiveMode();

//设置上传文件的类型为二进制类型

ftp.setFileType(FTP.BINARY_FILE_TYPE);

//上传文件

if(!ftp.storeFile(fileName, input)) {//读取本地文件失败

return result;

}

input.close();

ftp.logout();//通过发送QUIT命令退出FTP服务器

result=true;

} catch (IOException e) {

e.printStackTrace();

}finally {

if(ftp.isConnected()) {//如果客户机当前连接到服务器

try {

ftp.disconnect();//关闭到FTP服务器的连接,并将连接参数恢复到默认值。

} catch (IOException e) {

e.printStackTrace();

}

}

}

return result;

}

}

些控制台类UserController

@Controller

public class UserController {

@Value("${FTP.PORT}")

private int port;//端口

@Value("${FTP.USERNAME}")

private String userName;//用户名

@Value("${FTP.PASSWORD}")

private String passWord;//密码

@Value("${FTP.BASEPATH}")

private String basePath;//文件在服务器端保存的主目录

@Value("${IMAGE.BASE.URL}")

private String baseUrl;//访问图片时的基础url

@Autowired

private UserService userService;

@RequestMapping("/test")

public String index() {

return "index";

}

@RequestMapping("/pic/upload")

@ResponseBody

public String pictureUpload2(@RequestParam("pic")MultipartFile uploadFile,@RequestParam("username")String username,@RequestParam("password")String password) {

//给上传的图片生成新的文件名

try {

//获取原始文件名

String oldName = uploadFile.getOriginalFilename(); //返回客户机文件系统中的原始文件名。

//使用IDUtils工具类生成新的文件名,新文件名=newName+文件名后缀

String newName=IDUtils.genImageName();

newName=newName+oldName.substring(oldName.lastIndexOf("."));

//生成文件在服务器daunt存储的子目录

String filePath=new Date().toString();

//服务器ip

String host="192.168.172.128";

//把前端输入信息,包括图片的url保存到数据库

User user=new User();

user.setUsername(username);

user.setPassword(password);

user.setPicture(baseUrl+"/"+filePath+"/"+newName);

userService.insertUser(user);

//把图片上传搭配图片服务器

//获取上传的io流

InputStream input=uploadFile.getInputStream();

//调用FtpUtil工具类进行上传

boolean result=FtpUtils.uploadFile(host, port, userName, passWord, basePath, filePath, newName, input);

if(result) {

return "success";

}else {

return "false";

}

} catch (IOException e) {

return "false";

}

}

转载于:https://www.cnblogs.com/LuoPengSdok/p/11383194.html

上传下载文件实例(vsftp服务器+nginx)相关推荐

  1. python下载文件传到服务器_windows上python上传下载文件到linux服务器指定路径【转】...

    从windows上传文件到linux,目录下的文件夹自动创建 #!/usr/bin/env python # coding: utf-8 import paramiko import datetime ...

  2. python上传本地文件到ftp_python实现的简单FTP上传下载文件实例

    本文实例讲述了python实现的简单FTP上传下载文件的方法.分享给大家供大家参考.具体如下: python本身自带一个FTP模块,可以实现上传下载的函数功能. #!/usr/bin/env pyth ...

  3. 上传下载文件到Linux服务器

    转自链接:https://blog.csdn.net/drdongshiye/article/details/89430535 Mac的终端是十分强大 , 可以通过命令进行上传下载 下载文件夹 scp ...

  4. java 文件上传到ftp_JAVA技术实现上传下载文件到FTP服务器(完整)

    具体详细介绍请看下文: 在使用文件进行交互数据的应用来说,使用FTP服务器是一个很好的选择.本文使用Apache Jakarta Commons Net(commons-net-3.3.jar) 基于 ...

  5. linux上传文件权限命令,Linux 普通用户拿到root权限及使用szrz命令上传下载文件...

    1.如何拿到root权限 在shell里如果看到你的命令输入行最前面显示的是 $符号,说明目前账号只有系统的普通权限. 输入:sudo su 这时能看到shell的输入行最前面已经显示的是#号,说明已 ...

  6. linux lftp下载目录,linux中使用lftp上传下载文件

    lftp是linux中一款ftp服务器相比windows中的ftp显得要复杂不少了,下面我来总结一下lftp文件上传,文件下载,及文件查找等等相关命令吧. lftp连接的几种方法,最常用的是lftp ...

  7. JavaWeb实现文件上传下载功能实例解析

    转:http://www.cnblogs.com/xdp-gacl/p/4200090.html JavaWeb实现文件上传下载功能实例解析 在Web应用系统开发中,文件上传和下载功能是非常常用的功能 ...

  8. Linux| 向linux服务器上传下载文件方式收集(scp)

    scp [优点]简单方便,安全可靠:支持限速参数 [缺点]不支持排除目录 [用法] scp就是secure copy,是用来进行远程文件拷贝的.数据传输使用 ssh,并且和ssh 使用相同的认证方式, ...

  9. java文件流 m.jb51.net_FasfDFS整合Java实现文件上传下载功能实例详解

    今天使用Java代码实现文件的上传和下载.对此作者提供了Java API支持,下载fastdfs-client-java将源码添加到项目中.或者在Maven项目pom.xml文件中添加依赖 org.c ...

最新文章

  1. 哥伦比亚大学「机械手」无需提前了解抓握物体,也能灵活适应形状!
  2. 在SAP PI中建立场景
  3. 机器学习之贝叶斯分类(python实现)
  4. UVA11464偶数矩阵
  5. 37.Linux驱动调试-根据oops的栈信息,确定函数调用过程
  6. 0207.Domino R8.0.x群集配置手册
  7. 第二单元作业——电梯模拟总结
  8. 调试U-Boot笔记(一)
  9. 使用wxpy这个基于python实现的微信工具库的一些常见问题
  10. mysql cluster双机_GitHub - sophys/mysqlha: 博客“Mysql-cluster数据库集群双机HA研究”测试代码...
  11. 云原生时代,底层性能如何调优?
  12. 如何在验证集加噪声_如何使用Python构建机器学习模型
  13. java保留两位小数 四种方式
  14. git学习(八)pull,fetch,merge
  15. shell 入门(一)
  16. 安全可靠的透明加密软件
  17. ANSYS ICEM CFD——网格划分基础知识
  18. 【实战】替代Flash的,基于JQuery、HTML5文件上传插件
  19. 智能网联汽车云控系统第1部分:系统组成及基础平台架构
  20. ClickHouse在趣头条中的实战PPT

热门文章

  1. 思维导图工具---Xmind使用方法和快捷键汇总(精简版)
  2. Redis 提示“Couldn‘t determine DBSIZE!”
  3. matlab 锁相环仿真,MATLAB锁相环仿真程序求解
  4. 滑动鼠标滚轮后浏览器页面抖动
  5. selenium自动化之PO模型
  6. 使用snmpwalk采集设备的OID信息
  7. 文件服务器属于固定资产吗,服务器内存属于固定资产吗
  8. iPhone X 的适配
  9. 关于Servlet的两种配置Web.xml文件配置或者使用(@WebServlet(name = ,urlPatterns = ))配置问题——WebServlet注解
  10. mysql出现2058,连接MySQL报“Error No.2058 Plugin caching_sha2_password could not be loaded”