将图片上传到另一台服务器处理

2024-08-22 19:58

本文主要是介绍将图片上传到另一台服务器处理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

    最近做项目要将图片上传到另一台服务器,查资料实现了三种方法,下面就介绍一下方法。

1.sftp(最简单)

package com.xiang;import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.Properties;
import java.util.Vector;import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;
import com.jcraft.jsch.SftpException;public class Main {/*host 主机port 端口username 用户名password 密码*/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) {}return sftp;}/*directory 上传的目录uploadFile 要上传的文件*/public void upload(String directory, String uploadFile, ChannelSftp sftp) {try {sftp.cd(directory);File file = new File(uploadFile);sftp.put(new FileInputStream(file), file.getName());} catch (Exception e) {e.printStackTrace();}}/*downloadFile 下载的文件saveFile 存在本地的路径*/public void download(String directory, String downloadFile,String saveFile, ChannelSftp sftp) {try {sftp.cd(directory);File file = new File(saveFile);sftp.get(downloadFile, new FileOutputStream(file));} catch (Exception e) {e.printStackTrace();}}/*directory 要删除文件所在目录deleteFile 要删除的文件*/public void delete(String directory, String deleteFile, ChannelSftp sftp) {try {sftp.cd(directory);sftp.rm(deleteFile);} catch (Exception e) {e.printStackTrace();}}//directory 要列出的目录public Vector listFiles(String directory, ChannelSftp sftp)throws SftpException {return sftp.ls(directory);}public static void main(String[] args) {Main sf = new Main();String host = "192.168.17.128";int port = 22;String username = "root";String password = "mgxmgx";String directory = "/nginx/html/";String uploadFile = "D:\\bg.jpg";//String downloadFile = "upload.txt";//String saveFile = "D:\\tmp\\save.txt";//String deleteFile = "delete.txt";ChannelSftp sftp = sf.connect(host, port, username, password);sf.upload(directory, uploadFile, sftp);//sf.download(directory, downloadFile, saveFile, sftp);//sf.delete(directory, deleteFile, sftp);try {System.out.println("成功");} catch (Exception e) {e.printStackTrace();}}
}

需要的jar包:jsch-0.1.42-sources.jar   jsch-0.1.42.jar

还可参考:JSch - Java实现的SFTP(文件上传详解篇)

2.ftp(中等)

需要搭建ftp服务

Linux平台下快速搭建FTP服务器

package com.xiang;import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;import org.apache.commons.io.IOUtils;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;public class Test {public static void main(String[] args) {FTPClient ftpClient = new FTPClient();ftpClient.setControlEncoding("GBK");FileInputStream fis = null;try {ftpClient.connect("192.168.17.128");ftpClient.login("test", "123456");int reply = ftpClient.getReplyCode();  // 以2开头的返回值就会为真  if (!FTPReply.isPositiveCompletion(reply)) {  ftpClient.disconnect();  System.out.println("连接服务器失败");  return;  }  System.out.println("登陆服务器成功"); File srcFile = new File("D:\\bg.jpg");fis = new FileInputStream(srcFile);ftpClient.setFileType(ftpClient.BINARY_FILE_TYPE);ftpClient.makeDirectory("123");ftpClient.changeWorkingDirectory("123");ftpClient.storeFile("new.jpg", fis);} catch (IOException e) {e.printStackTrace();throw new RuntimeException("FTP客户端出错!", e);} finally {IOUtils.closeQuietly(fis);try {fis.close();} catch (IOException e1) {e1.printStackTrace();}try {ftpClient.disconnect();} catch (IOException e) {e.printStackTrace();throw new RuntimeException("关闭FTP连接发生异常!", e);}} }}

需要的jar包:commons-io-1.4-javadoc.jar commons-io-1.4-sources.jar commons-io-1.4.jar

3.通过nginx上传模块上传至另一服务器nginx

相当坑,n年前的东西了,配置相当难虽然配置成功了,但感觉不好用
想配置的话可参考http://www.tuicool.com/wx/aUrAzm
下载的东西最好按照文章中来,我起初用的nginx1.9.0怎么配置都不行,坑死个人    本人配置了一下午,有兴趣的可以实现一下

这篇关于将图片上传到另一台服务器处理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1097246

相关文章

MyBatis-Plus通用中等、大量数据分批查询和处理方法

《MyBatis-Plus通用中等、大量数据分批查询和处理方法》文章介绍MyBatis-Plus分页查询处理,通过函数式接口与Lambda表达式实现通用逻辑,方法抽象但功能强大,建议扩展分批处理及流式... 目录函数式接口获取分页数据接口数据处理接口通用逻辑工具类使用方法简单查询自定义查询方法总结函数式接口

SpringBoot结合Docker进行容器化处理指南

《SpringBoot结合Docker进行容器化处理指南》在当今快速发展的软件工程领域,SpringBoot和Docker已经成为现代Java开发者的必备工具,本文将深入讲解如何将一个SpringBo... 目录前言一、为什么选择 Spring Bootjavascript + docker1. 快速部署与

基于Python实现一个图片拆分工具

《基于Python实现一个图片拆分工具》这篇文章主要为大家详细介绍了如何基于Python实现一个图片拆分工具,可以根据需要的行数和列数进行拆分,感兴趣的小伙伴可以跟随小编一起学习一下... 简单介绍先自己选择输入的图片,默认是输出到项目文件夹中,可以自己选择其他的文件夹,选择需要拆分的行数和列数,可以通过

Python使用vllm处理多模态数据的预处理技巧

《Python使用vllm处理多模态数据的预处理技巧》本文深入探讨了在Python环境下使用vLLM处理多模态数据的预处理技巧,我们将从基础概念出发,详细讲解文本、图像、音频等多模态数据的预处理方法,... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

Spring Boot @RestControllerAdvice全局异常处理最佳实践

《SpringBoot@RestControllerAdvice全局异常处理最佳实践》本文详解SpringBoot中通过@RestControllerAdvice实现全局异常处理,强调代码复用、统... 目录前言一、为什么要使用全局异常处理?二、核心注解解析1. @RestControllerAdvice2

java实现docker镜像上传到harbor仓库的方式

《java实现docker镜像上传到harbor仓库的方式》:本文主要介绍java实现docker镜像上传到harbor仓库的方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录1. 前 言2. 编写工具类2.1 引入依赖包2.2 使用当前服务器的docker环境推送镜像2.2

mysql中的服务器架构详解

《mysql中的服务器架构详解》:本文主要介绍mysql中的服务器架构,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、mysql服务器架构解释3、总结1、背景简单理解一下mysqphpl的服务器架构。2、mysjsql服务器架构解释mysql的架

Linux如何快速检查服务器的硬件配置和性能指标

《Linux如何快速检查服务器的硬件配置和性能指标》在运维和开发工作中,我们经常需要快速检查Linux服务器的硬件配置和性能指标,本文将以CentOS为例,介绍如何通过命令行快速获取这些关键信息,... 目录引言一、查询CPU核心数编程(几C?)1. 使用 nproc(最简单)2. 使用 lscpu(详细信

利用Python脚本实现批量将图片转换为WebP格式

《利用Python脚本实现批量将图片转换为WebP格式》Python语言的简洁语法和库支持使其成为图像处理的理想选择,本文将介绍如何利用Python实现批量将图片转换为WebP格式的脚本,WebP作为... 目录简介1. python在图像处理中的应用2. WebP格式的原理和优势2.1 WebP格式与传统

基于 HTML5 Canvas 实现图片旋转与下载功能(完整代码展示)

《基于HTML5Canvas实现图片旋转与下载功能(完整代码展示)》本文将深入剖析一段基于HTML5Canvas的代码,该代码实现了图片的旋转(90度和180度)以及旋转后图片的下载... 目录一、引言二、html 结构分析三、css 样式分析四、JavaScript 功能实现一、引言在 Web 开发中,