帮助文档
专业提供香港服务器、香港云服务器、香港高防服务器租用、香港云主机、台湾服务器、美国服务器、美国云服务器vps租用、韩国高防服务器租用、新加坡服务器、日本服务器租用 一站式全球网络解决方案提供商!专业运营维护IDC数据中心,提供高质量的服务器托管,服务器机房租用,服务器机柜租用,IDC机房机柜租用等服务,稳定、安全、高性能的云端计算服务,实时满足您的多样性业务需求。 香港大带宽稳定可靠,高级工程师提供基于服务器硬件、操作系统、网络、应用环境、安全的免费技术支持。
服务器资讯 / 香港服务器租用 / 香港VPS租用 / 香港云服务器 / 美国服务器租用 / 台湾服务器租用 / 日本服务器租用 / 官方公告 / 帮助文档
java上传文件到指定服务器
发布时间:2024-03-06 07:53:10   分类:帮助文档
java上传文件到指定服务器 首先要知道服务器的用户名和密码。 注意:一般情况,如果不是强制要求,尽量不要将文件上传到服务器 步骤: 1.导入依赖                     com.jcraft             jsch             0.1.54         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 uploadMultipartFilesToServer(MultipartFile[] files) throws SftpException, JSchException, IOException {         List 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> file(MultipartFile[] files) throws Exception {         List paths = sftpUtil.uploadMultipartFilesToServer(files);         return Result.ofSuccess(paths);     }
香港云服务器租用推荐
服务器租用资讯
·广东云服务有限公司怎么样
·广东云服务器怎么样
·广东锐讯网络有限公司怎么样
·广东佛山的蜗牛怎么那么大
·广东单位电话主机号怎么填写
·管家婆 花生壳怎么用
·官网域名过期要怎么办
·官网邮箱一般怎么命名
·官网网站被篡改怎么办
服务器租用推荐
·美国服务器租用
·台湾服务器租用
·香港云服务器租用
·香港裸金属服务器
·香港高防服务器租用
·香港服务器租用特价