JAVA代码实现上传文件至文件服务器(远程服务器、非项目当前所在服务器)

步骤一:添加依赖

<!--sftp文件上传-->
<dependency>
<groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
<version>0.1.54</version>
</dependency>

步骤二:编写工具类

package com.example.vue.vuedemo;

import com.jcraft.jsch.Channel;
import com.jcraft.jsch.*;

import java.io.*;

/**
* Created by jlm on 2019-09-17 17:44
*/
public class FtpUtils {

/**
* 利用JSch包实现SFTP上传文件
* @param bytes 文件字节流
* @param fileName 文件名
* @throws Exception
*/
public static void sshSftp(byte[] bytes,String fileName) throws Exception{
//指定的服务器地址
String ip = "服务器ip地址";
//用户名
String user = "用户名";
//密码
String password = "密码";
//服务器端口 默认22
int port = 22;
//上传文件到指定服务器的指定目录 自行修改
String path = "/root";

Session session = null;
Channel channel = null;

JSch jsch = new JSch();

if(port <=0){
//连接服务器,采用默认端口
session = jsch.getSession(user, ip);
}else{
//采用指定的端口连接服务器
session = jsch.getSession(user, ip ,port);
}

//如果服务器连接不上,则抛出异常
if (session == null) {
throw new Exception("session is null");
}

//设置登陆主机的密码
session.setPassword(password);//设置密码
//设置第一次登陆的时候提示,可选值:(ask | yes | no)
session.setConfig("StrictHostKeyChecking", "no");
//设置登陆超时时间
session.connect(30000);

OutputStream outstream = null;
try {
//创建sftp通信通道
channel = (Channel) session.openChannel("sftp");
channel.connect(1000);
ChannelSftp sftp = (ChannelSftp) channel;

//进入服务器指定的文件夹
sftp.cd(path);

//列出服务器指定的文件列表
// Vector v = sftp.ls("*");
// for(int i=0;i<v.size();i++){
// System.out.println(v.get(i));
// }

//以下代码实现从本地上传一个文件到服务器,如果要实现下载,对换以下流就可以了
outstream = sftp.put(fileName);
outstream.write(bytes);

} catch (Exception e) {
e.printStackTrace();
} finally {
//关流操作
if(outstream != null){
outstream.flush();
outstream.close();
}
if(session != null){
session.disconnect();
}
if(channel != null){
channel.disconnect();
}
}
}

}

步骤三:写一个接口上传文件,调用工具类方法即可

package com.example.vue.vuedemo;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;

/**
* Created by jlm on 2019-09-17 17:42
*/
@RestController
public class UploadController {

@RequestMapping("file")
public void upload(HttpServletRequest httpServletRequest, MultipartFile file) throws Exception {
byte[] bytes = file.getBytes();
FtpUtils.sshSftp(bytes,"1111.jpg");

}

}

————————————————
版权声明:本文为CSDN博主「Rice_kil」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Rice_kil/article/details/100934710

原文地址:https://www.cnblogs.com/niudaxianren/p/12409134.html

时间: 2024-08-01 20:46:58

JAVA代码实现上传文件至文件服务器(远程服务器、非项目当前所在服务器)的相关文章

Java使用HttpURLConnection上传文件

从普通Web页面上传文件很简单,只需要在form标签叫上enctype="multipart/form-data"即可,剩余工作便都交给浏览器去完成数据收集并发送Http请求.但是如果没有页面的话要怎么上传文件呢? 由于脱离了浏览器的环境,我们就要自己去完成数据的收集并发送请求,所以就很麻烦了.首先我们来写个JSP页面并看看浏览器发出的Http请求是什么样的 JSP页面: <html> <head> <meta charset="UTF-8&qu

java使用httpcomponents 上传文件

一.httpcomponents简介 httpcomponents 是apache下的用来负责创建和维护一个工具集的低水平Java组件集中在HTTP和相关协议的工程.我们可以用它在代码中直接发送http请求,而无需用到页面的js去完成.该项目由一下几个部分组成: 1.HttpComponents Core: HttpCore 是一套的低级别的 HTTP 传输组件可用于构建自定义客户端和服务器端 HTTP 服务与一个最小的足迹.HttpCore 支持两种模型: 阻止基于经典 Java I/O 和非

关于云储存或者百度云的基础问题, 用java/android 实现上传文件到云储存(比如百度云)

============问题描述============ 关于云储存或者百度云的基础问题, 用java/android 实现上传文件到云储存(比如百度云) ============解决方案1============ 参考百度相关api

java使用ftp上传文件

ftpServer是apache MINA项目的一个子项目,它实现了一个ftp服务器,与vsftpd是同类产品.Filezilla是一个可视化的ftp服务器. ftp客户端也有很多,如Filezilla,FlashFXP,SmartFtp等,其中只有Filezilla是免费的. 今天使用Filezilla上传文件总是失败,一直显示 错误: 20 秒后无活动,连接超时 错误: 文件传输失败 用FlashFXP却可以很正常上传文件,但FlashFXP试用期只有30天,网上搜索注册码未果,遂想学学ja

Java Servlet 接收上传文件

在Java中使用 Servlet 来接收用户上传的文件,需要用到两个apache包,分别是 commons-fileupload 和 commons-io 包: 如果直接在doPost中,使用request.getInputStream()获取ServletInputStream,这样获取到的Stream是不能直接写入文件的,比如上传一个txt文件,你会发现保存下来的txt文件不只有原本txt文件本身的内容,里面还有post请求的一些参数,比如参数分割符等: 下面就是一个使用fileupload

java实用技能 上传文件 等等

1.IOS  AES对称加密,加密结果不同,问题解决 IOS http post请求,使用AFNetworing 框架,默认请求content-type为application/json ,所以无法使用@RequestParam或request.getParameter获取值 当把content-type改为applicaion/x-www-...  后,body中使用@RequestParam或request.getParameter仍然获取不到参数 加解密的结果,编码的结果,服务端有可能字母

java FileUpload 组件上传文件

Commons FileUpload Apache提供的一个组件,可以很方便的让我们处理客户端上传的文件, 下载地址 http://commons.apache.org/proper/commons-fileupload/ 下载commons-fileupload.jar,还有其依赖包 commons-io.jar一同下载好,导入工程 有点奇葩的是,在tomcat下已经把這个组建集成了,但是不能正常使用,其源码基本上是一样的. 正确的包名应该是這个:org.apache.commons.file

java通过sftp上传文件

转载:http://blog.csdn.net/yhl_jxy/article/details/72633034 Linux操作系统我们经常使用ssh中的ftp,sftp连接服务器,做相应操作. 如何通过java代码的形式采用sftp连接到服务器,进行文件上传下载等操作呢? 第一步,引入依赖包 [html] view plain copy <!-- sftp上传依赖包 --> <dependency> <groupId>com.jcraft</groupId>

上传文件到文件服务器并在web页面显示

1 hostIP=192.168.100.10 2 loginUser=leorain 3 loginPwd=leorain 4 imagePath=images 1 package com.usi.wxcm.common.util; 2 3 4 import java.io.BufferedInputStream; 5 import java.io.BufferedOutputStream; 6 import java.io.File; 7 import java.io.FileInputSt