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

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

相关文章

Java 中的 @SneakyThrows 注解使用方法(简化异常处理的利与弊)

《Java中的@SneakyThrows注解使用方法(简化异常处理的利与弊)》为了简化异常处理,Lombok提供了一个强大的注解@SneakyThrows,本文将详细介绍@SneakyThro... 目录1. @SneakyThrows 简介 1.1 什么是 Lombok?2. @SneakyThrows

在 Spring Boot 中实现异常处理最佳实践

《在SpringBoot中实现异常处理最佳实践》本文介绍如何在SpringBoot中实现异常处理,涵盖核心概念、实现方法、与先前查询的集成、性能分析、常见问题和最佳实践,感兴趣的朋友一起看看吧... 目录一、Spring Boot 异常处理的背景与核心概念1.1 为什么需要异常处理?1.2 Spring B

python处理带有时区的日期和时间数据

《python处理带有时区的日期和时间数据》这篇文章主要为大家详细介绍了如何在Python中使用pytz库处理时区信息,包括获取当前UTC时间,转换为特定时区等,有需要的小伙伴可以参考一下... 目录时区基本信息python datetime使用timezonepandas处理时区数据知识延展时区基本信息

Android使用ImageView.ScaleType实现图片的缩放与裁剪功能

《Android使用ImageView.ScaleType实现图片的缩放与裁剪功能》ImageView是最常用的控件之一,它用于展示各种类型的图片,为了能够根据需求调整图片的显示效果,Android提... 目录什么是 ImageView.ScaleType?FIT_XYFIT_STARTFIT_CENTE

Go语言开发实现查询IP信息的MCP服务器

《Go语言开发实现查询IP信息的MCP服务器》随着MCP的快速普及和广泛应用,MCP服务器也层出不穷,本文将详细介绍如何在Go语言中使用go-mcp库来开发一个查询IP信息的MCP... 目录前言mcp-ip-geo 服务器目录结构说明查询 IP 信息功能实现工具实现工具管理查询单个 IP 信息工具的实现服

关于MongoDB图片URL存储异常问题以及解决

《关于MongoDB图片URL存储异常问题以及解决》:本文主要介绍关于MongoDB图片URL存储异常问题以及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录MongoDB图片URL存储异常问题项目场景问题描述原因分析解决方案预防措施js总结MongoDB图

Python Transformers库(NLP处理库)案例代码讲解

《PythonTransformers库(NLP处理库)案例代码讲解》本文介绍transformers库的全面讲解,包含基础知识、高级用法、案例代码及学习路径,内容经过组织,适合不同阶段的学习者,对... 目录一、基础知识1. Transformers 库简介2. 安装与环境配置3. 快速上手示例二、核心模

一文详解Java异常处理你都了解哪些知识

《一文详解Java异常处理你都了解哪些知识》:本文主要介绍Java异常处理的相关资料,包括异常的分类、捕获和处理异常的语法、常见的异常类型以及自定义异常的实现,文中通过代码介绍的非常详细,需要的朋... 目录前言一、什么是异常二、异常的分类2.1 受检异常2.2 非受检异常三、异常处理的语法3.1 try-

Python使用getopt处理命令行参数示例解析(最佳实践)

《Python使用getopt处理命令行参数示例解析(最佳实践)》getopt模块是Python标准库中一个简单但强大的命令行参数处理工具,它特别适合那些需要快速实现基本命令行参数解析的场景,或者需要... 目录为什么需要处理命令行参数?getopt模块基础实际应用示例与其他参数处理方式的比较常见问http

Java Response返回值的最佳处理方案

《JavaResponse返回值的最佳处理方案》在开发Web应用程序时,我们经常需要通过HTTP请求从服务器获取响应数据,这些数据可以是JSON、XML、甚至是文件,本篇文章将详细解析Java中处理... 目录摘要概述核心问题:关键技术点:源码解析示例 1:使用HttpURLConnection获取Resp