外贸建站seo,ui设计师岗位介绍,软件下载网站如何履行安全管理义务确保提供的软件不含恶意程序,中跃建设集团有限公司网站首先要知道服务器的用户名和密码。
注意#xff1a;一般情况#xff0c;如果不是强制要求#xff0c;尽量不要将文件上传到服务器
步骤#xff1a;
1.导入依赖 !--图片上传到服务器需要的依赖-- dependency groupIdcom.jcr…首先要知道服务器的用户名和密码。
注意一般情况如果不是强制要求尽量不要将文件上传到服务器
步骤
1.导入依赖 !--图片上传到服务器需要的依赖-- dependency groupIdcom.jcraft/groupId artifactIdjsch/artifactId version0.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 ListString uploadMultipartFilesToServer(MultipartFile[] files) throws SftpException, JSchException, IOException { ListString 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 ResultListString file(MultipartFile[] files) throws Exception { ListString paths sftpUtil.uploadMultipartFilesToServer(files); return Result.ofSuccess(paths); }