当前位置: 首页 > news >正文

南通网站排名服务wordpress主页编辑

南通网站排名服务,wordpress主页编辑,wordpress自定义广告,网站规划与网页设计第四版电子书首先要知道服务器的用户名和密码。 注意&#xff1a;一般情况&#xff0c;如果不是强制要求&#xff0c;尽量不要将文件上传到服务器 步骤&#xff1a; 1.导入依赖 <!--图片上传到服务器需要的依赖--> <dependency> <groupId>com.jcr…

首先要知道服务器的用户名和密码。

注意:一般情况,如果不是强制要求,尽量不要将文件上传到服务器

步骤:

1.导入依赖

<!--图片上传到服务器需要的依赖-->
        <dependency>
            <groupId>com.jcraft</groupId>
            <artifactId>jsch</artifactId>
            <version>0.1.54</version>
        </dependency>

2.编写配置文件application.yml

customize:
    remoteServer:
        sftp:
          SFTP_httpBaseUrl: /images/ # 访问附件的地址添加 一个映射 如  /images/ -》 /server-images/
          SFTP_httpPort: 80 # 公网访问的端口
          SFTP_directory: /server-images/ #主机保存附件目录
          SFTP_host: 192.168.1.10 #主机
          SFTP_port: 22 #端口号
          SFTP_username: root #用户名
          SFTP_password: 123456 #密码

 3.编写文件上传所需要的工具类

import com.jcraft.jsch.*;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;

import java.time.LocalDate;
import java.util.Properties;
import java.util.UUID;


/**
 * 类描述:
 * 上传文件到服务器的 工具类
 *
 * @ClassName SFTPUtil
 * @Author msi
 * @Date 2020/9/2 23:29
 * @Version 1.0
 */
@Component
public class SFTPUtil {

    /**
     * 返回公网访问的地址前缀
     */
    @Value("${customize.remoteServer.sftp.SFTP_httpBaseUrl}")
    protected String baseUrl;
    /**
     * 公网访问的端口
     */
    @Value("${customize.remoteServer.sftp.SFTP_httpPort}")
    protected int port;
    /**
     * 主机保存的目录
     */
    @Value("${customize.remoteServer.sftp.SFTP_directory}")
    protected String directory;
    /**
     * 主机的IP
     */
    @Value("${customize.remoteServer.sftp.SFTP_host}")
    protected String host;
    /**
     * ssh端口
     */
    @Value("${customize.remoteServer.sftp.SFTP_port}")
    protected int sshPort;
    /**
     * 用户名
     */
    @Value("${customize.remoteServer.sftp.SFTP_username}")
    protected String username;
    /**
     * 密码
     */
    @Value("${customize.remoteServer.sftp.SFTP_password}")
    protected String password;

    /**
     * 上传多文件到指定远程主机
     * @param files     文件数组
     * @return list 
     */
    public List<String> uploadMultipartFilesToServer(MultipartFile[] files) throws SftpException, JSchException, IOException {
        List<String> list = new ArrayList<>();
        ChannelSftp sftp = null;
        Session session = null;
        sftp = this.connect(this.host, this.sshPort, this.username, this.password);
        session = sftp.getSession();
        for (int i = 0; i < files.length; i++) {
            String originalFilename = files[i].getOriginalFilename();
            // 生成文件夹名 yyyy-mm
            String relativePath = new StringBuilder().append(LocalDate.now().getYear())
                    .append("-").append(LocalDate.now().getMonthValue()).toString();

            String uuid = UUID.randomUUID().toString().replace("-", "").toLowerCase();

            int lastIndex = originalFilename.lastIndexOf(".");
            String fileSuffix = originalFilename.substring(lastIndex);
            String filePrefix = originalFilename.substring(0, lastIndex);
            String fileName = new StringBuilder().append(filePrefix).append(uuid).append(fileSuffix).toString();

            // 文件上层目录
            String directory = this.directory + relativePath;
            // 创建文件夹
            this.createDir(directory, sftp);
            // 进入文件夹内
            sftp.cd(directory);
            // 创建文件
            sftp.put(files[0].getInputStream(), fileName);
            // 拼接返回格式
            String s = new StringBuilder("http://").append(this.host).append(":").append(this.port)
                    .append(this.baseUrl).append(relativePath).append("/").append(fileName).toString();

            list.add(s);
        }
        // 关掉连接
        sftp.disconnect();
        sftp.getSession().disconnect();

        return list;
    }

    /**
     * 建立连接
     * @param host  主机
     * @param port  端口
     * @param username  用户名
     * @param password  密码
     * @return
     */
    public ChannelSftp connect(String host, int port, String username,
                               String password) {
        ChannelSftp sftp = null;
        try {
            JSch jsch = new JSch();
            jsch.getSession(username, host, port);
            Session sshSession = jsch.getSession(username, host, port);
            sshSession.setPassword(password);
            Properties sshConfig = new Properties();
            sshConfig.put("StrictHostKeyChecking", "no");
            sshSession.setConfig(sshConfig);
            sshSession.connect();
            Channel channel = sshSession.openChannel("sftp");
            channel.connect();
            sftp = (ChannelSftp) channel;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return sftp;
    }

    /**
     * 创建目录
     *
     */
    public void createDir(String createpath, ChannelSftp sftp) {
        try {
            if (isDirExist(sftp, createpath)) {
                sftp.cd(createpath);
            }
            String pathArry[] = createpath.split("/");
            StringBuffer filePath = new StringBuffer("/");
            // 循环创建目录
            for (String path : pathArry) {
                if (path.equals("")) {
                    continue;
                }
                filePath.append(path + "/");
                if (isDirExist(sftp, filePath.toString())) {
                    sftp.cd(filePath.toString());
                } else {
                    // 建立目录
                    sftp.mkdir(filePath.toString());
                    // 进入并设置为当前目录
                    sftp.cd(filePath.toString());
                }
            }
            sftp.cd(createpath);
        } catch (SftpException e) {
            e.printStackTrace();
        }
    }


    /**
     * 判断目录是否存在
     */
    public boolean isDirExist(ChannelSftp sftp, String directory) {
        boolean isDirExistFlag = false;
        try {
            SftpATTRS sftpATTRS = sftp.lstat(directory);
            isDirExistFlag = true;
            return sftpATTRS.isDir();
        } catch (Exception e) {
            if (e.getMessage().toLowerCase().equals("no such file")) {
                isDirExistFlag = false;
            }
        }
        return isDirExistFlag;
    }
}
 

4.编写对应controller进行调试

 @Autowired
    private UpdateFileUtil sftpUtil;
    /**
     * 上传文件到服务器
     *
     * @param files 图片
     * @return
     */
    @PostMapping("/file")
    public Result<List<String>> file(MultipartFile[] files) throws Exception {
        List<String> paths = sftpUtil.uploadMultipartFilesToServer(files);
        return Result.ofSuccess(paths);
    }

http://www.yayakq.cn/news/322140/

相关文章:

  • 网站建设进度表怎么做网站建设有哪些推广渠道
  • 曹县做网站违法网站做网站的人会受罚嘛
  • 加强网站互动交流平台建设自查成都网站优化网
  • 有没有做软件的网站西渡网站建设
  • 南昌网站建设公司收费苏州网站建设工作室
  • 新开传奇网站曾劲松wordpress建电商网站
  • 外国做的福利小视频在线观看网站网络推广模板网站
  • 如何在阿里云自主建网站公司的服务器能建设网站吗
  • 网站建设确认单临沂制作手机网站
  • 昆明网站开发价格公司设计网页
  • 做摄影网站的目的是什么开源门户网站建设方案
  • 网站建设教程 零基础镇江网页
  • 中小企业做网站推广大连最繁华的区是哪个区
  • 写作网站原码大淘客平台怎么做分销网站
  • 临沂龙文网站建设建行官网个人银行
  • 湖南沙坪建设有限公司网站淘宝搜索关键词查询工具
  • 公司做网站 微信平台做网站的几个必要步骤
  • 柳州市城市建设局网站wordpress模板yunnut
  • 代做ppt网站哈尔滨网页设计公司
  • 个人工作室网站ftp媒体库wordpress
  • 专注律师微网站建设与律师微信营销6唯品会专门做特卖的网站
  • 网站栏目是什么网络工程师难学吗
  • wordpress站点切换为中文建立网站后期需要干嘛
  • 做网站文案策划步骤网站建设去哪里学
  • 北京开发网站中国手机网站
  • 电话营销怎么做网站搜索引擎优化
  • 怎么做个人网站的网站开发方面的文献
  • 网站建设的外国文献dede网站制作教程
  • tp5.1做的网站自个网站
  • 制作个人网站教程教程建设网站