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

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

相关文章

Prometheus+cpolar如何在手机上也能监控服务器状态?

《Prometheus+cpolar如何在手机上也能监控服务器状态?》本文强调了通过Cpolar这一内网穿透工具,轻松突破Prometheus仅限于局域网访问的限制,实现外网随时随地访问监控数据,教你... 目录前言1.安装prometheus2.安装cpolar实现随时随地开发3.配置公网地址4.保留固定

Python+FFmpeg实现视频自动化处理的完整指南

《Python+FFmpeg实现视频自动化处理的完整指南》本文总结了一套在Python中使用subprocess.run调用FFmpeg进行视频自动化处理的解决方案,涵盖了跨平台硬件加速、中间素材处理... 目录一、 跨平台硬件加速:统一接口设计1. 核心映射逻辑2. python 实现代码二、 中间素材处

Go异常处理、泛型和文件操作实例代码

《Go异常处理、泛型和文件操作实例代码》Go语言的异常处理机制与传统的面向对象语言(如Java、C#)所使用的try-catch结构有所不同,它采用了自己独特的设计理念和方法,:本文主要介绍Go异... 目录一:异常处理常见的异常处理向上抛中断程序恢复程序二:泛型泛型函数泛型结构体泛型切片泛型 map三:文

Java使用Spire.Doc for Java实现Word自动化插入图片

《Java使用Spire.DocforJava实现Word自动化插入图片》在日常工作中,Word文档是不可或缺的工具,而图片作为信息传达的重要载体,其在文档中的插入与布局显得尤为关键,下面我们就来... 目录1. Spire.Doc for Java库介绍与安装2. 使用特定的环绕方式插入图片3. 在指定位

SpringSecurity中的跨域问题处理方案

《SpringSecurity中的跨域问题处理方案》本文介绍了跨域资源共享(CORS)技术在JavaEE开发中的应用,详细讲解了CORS的工作原理,包括简单请求和非简单请求的处理方式,本文结合实例代码... 目录1.什么是CORS2.简单请求3.非简单请求4.Spring跨域解决方案4.1.@CrossOr

requests处理token鉴权接口和jsonpath使用方式

《requests处理token鉴权接口和jsonpath使用方式》文章介绍了如何使用requests库进行token鉴权接口的处理,包括登录提取token并保存,还详述了如何使用jsonpath表达... 目录requests处理token鉴权接口和jsonpath使用json数据提取工具总结reques

Linux服务器数据盘移除并重新挂载的全过程

《Linux服务器数据盘移除并重新挂载的全过程》:本文主要介绍在Linux服务器上移除并重新挂载数据盘的整个过程,分为三大步:卸载文件系统、分离磁盘和重新挂载,每一步都有详细的步骤和注意事项,确保... 目录引言第一步:卸载文件系统第二步:分离磁盘第三步:重新挂载引言在 linux 服务器上移除并重新挂p

Python多任务爬虫实现爬取图片和GDP数据

《Python多任务爬虫实现爬取图片和GDP数据》本文主要介绍了基于FastAPI开发Web站点的方法,包括搭建Web服务器、处理图片资源、实现多任务爬虫和数据可视化,同时,还简要介绍了Python爬... 目录一. 基于FastAPI之Web站点开发1. 基于FastAPI搭建Web服务器2. Web服务

Apache服务器IP自动跳转域名的问题及解决方案

《Apache服务器IP自动跳转域名的问题及解决方案》本教程将详细介绍如何通过Apache虚拟主机配置实现这一功能,并解决常见问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,... 目录​​问题背景​​解决方案​​方法 1:修改 httpd-vhosts.conf(推荐)​​步骤

C# 空值处理运算符??、?. 及其它常用符号

《C#空值处理运算符??、?.及其它常用符号》本文主要介绍了C#空值处理运算符??、?.及其它常用符号,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录一、核心运算符:直接解决空值问题1.??空合并运算符2.?.空条件运算符二、辅助运算符:扩展空值处理