java后台文件上传到资源服务器上

java后台文件上传到资源服务器上,第1张

package comletvdircloudutil;import comletvdircloudcontrollerDirectorWatermarkController;import orgslf4jLogger;import orgslf4jLoggerFactory;import javaio;import javanet>服务器端源码:\x0d\import javaioBufferedReader;\x0d\import javaioFile;\x0d\import javaioFileNotFoundException;\x0d\import javaioFileOutputStream;\x0d\import javaioIOException;\x0d\import javaioInputStream;\x0d\import javaioInputStreamReader;\x0d\import javanetServerSocket;\x0d\import javanetSocket;\x0d\\x0d\/\x0d\ \x0d\ 文件名:ServerReceivejava\x0d\ 实现功能:作为服务器接收客户端发送的文件\x0d\ \x0d\ 具体实现过程:\x0d\ 1、建立SocketServer,等待客户端的连接\x0d\ 2、当有客户端连接的时候,按照双方的约定,这时要读取一行数据\x0d\ 其中保存客户端要发送的文件名和文件大小信息\x0d\ 3、根据文件名在本地创建文件,并建立好流通信\x0d\ 4、循环接收数据包,将数据包写入文件\x0d\ 5、当接收数据的长度等于提前文件发过来的文件长度,即表示文件接收完毕,关闭文件\x0d\ 6、文件接收工作结束\x0d\\x0d\public class ServerReceive {\x0d\ \x0d\ public static void main(String[] args) {\x0d\ \x0d\ /与服务器建立连接的通信句柄/\x0d\ ServerSocket ss = null;\x0d\ Socket s = null;\x0d\ \x0d\ /定义用于在接收后在本地创建的文件对象和文件输出流对象/\x0d\ File file = null;\x0d\ FileOutputStream fos = null;\x0d\ \x0d\ /定义输入流,使用socket的inputStream对数据包进行输入/\x0d\ InputStream is = null;\x0d\ \x0d\ /定义byte数组来作为数据包的存储数据包/\x0d\ byte[] buffer = new byte[4096 5];\x0d\ \x0d\ /用来接收文件发送请求的字符串/\x0d\ String comm = null;\x0d\\x0d\/建立socekt通信,等待服务器进行连接/\x0d\ try {\x0d\ ss = new ServerSocket(4004);\x0d\ s = ssaccept();\x0d\ } catch (IOException e) {\x0d\ eprintStackTrace();\x0d\ }\x0d\\x0d\/读取一行客户端发送过来的约定信息/\x0d\ try {\x0d\ InputStreamReader isr = new InputStreamReader(sgetInputStream());\x0d\ BufferedReader br = new BufferedReader(isr);\x0d\ comm = brreadLine();\x0d\ } catch (IOException e) {\x0d\ Systemoutprintln("服务器与客户端断开连接");\x0d\ }\x0d\ \x0d\ /开始解析客户端发送过来的请求命令/\x0d\ int index = commindexOf("/#");\x0d\ \x0d\ /判断协议是否为发送文件的协议/\x0d\ String xieyi = commsubstring(0, index);\x0d\ if(!xieyiequals("111")){\x0d\ Systemoutprintln("服务器收到的协议码不正确");\x0d\ return;\x0d\ }\x0d\ \x0d\ /解析出文件的名字和大小/\x0d\ comm = commsubstring(index + 2);\x0d\ index = commindexOf("/#");\x0d\ String filename = commsubstring(0, index)trim();\x0d\ String filesize = commsubstring(index + 2)trim();\x0d\\x0d\/创建空文件,用来进行接收文件/\x0d\ file = new File(filename);\x0d\ if(!fileexists()){\x0d\ try {\x0d\ filecreateNewFile();\x0d\ } catch (IOException e) {\x0d\ Systemoutprintln("服务器端创建文件失败");\x0d\ }\x0d\ }else{\x0d\ /在此也可以询问是否覆盖/\x0d\ Systemoutprintln("本路径已存在相同文件,进行覆盖");\x0d\ }\x0d\ \x0d\ /以上就是客户端代码中写到的服务器的准备部分/\x0d\\x0d\/\x0d\ 服务器接收文件的关键代码/\x0d\ try {\x0d\ /将文件包装到文件输出流对象中/\x0d\ fos = new FileOutputStream(file);\x0d\ long file_size = LongparseLong(filesize);\x0d\ is = sgetInputStream();\x0d\ /size为每次接收数据包的长度/\x0d\ int size = 0;\x0d\ /count用来记录已接收到文件的长度/\x0d\ long count = 0;\x0d\ \x0d\ /使用while循环接收数据包/\x0d\ while(count 回答于 2022-12-11

可以直接通过流的形式上传或者下载。
import javaioFile;
import javaioFileInputStream;
import javaioFileOutputStream;
import javautilProperties;
import comjcraftjschChannel;
import comjcraftjschChannelSftp;
import comjcraftjschJSch;
import comjcraftjschSession;
import comjcraftjschSftpException;
import hkrtb2bviewutilLog;
import javautilVector;
import znccfccbutilCCFCCBUtil;
/
/
public class CCFCCBSftp {
/
连接sftp服务器

@return
/
public static ChannelSftp connect() {
ChannelSftp sftp = null;
try {
JSch jsch = new JSch();
jschgetSession(CCFCCBUtilCCFCCBHOSTNAME, CCFCCBUtilCCFCCBHOSTNAME, 22);
Session sshSession = jschgetSession(CCFCCBUtilCCFCCBLOGINNAME, CCFCCBUtilCCFCCBHOSTNAME, 22);
Systemoutprintln("Session created");
sshSessionsetPassword(CCFCCBUtilCCFCCBLOGINPASSWORD);
Properties sshConfig = new Properties();
sshConfigput("StrictHostKeyChecking", "no");
sshSessionsetConfig(sshConfig);
sshSessionconnect();
Systemoutprintln("Session connected");
Systemoutprintln("Opening Channel");
Channel channel = sshSessionopenChannel("sftp");
channelconnect();
sftp = (ChannelSftp) channel;
Systemoutprintln("Connected to " + CCFCCBUtilCCFCCBHOSTNAME + "");
} catch (Exception e) {
}
return sftp;
}
/
连接sftp服务器

@param host 主机
@param port 端口
@param username 用户名
@param password 密码
@return
/
public static ChannelSftp connect(String host, int port, String username,
String password) {
ChannelSftp sftp = null;
try {
JSch jsch = new JSch();
jschgetSession(CCFCCBUtilCCFCCBHOSTNAME, CCFCCBUtilCCFCCBHOSTNAME, 22);
Session sshSession = jschgetSession(CCFCCBUtilCCFCCBLOGINNAME, host, port);
Systemoutprintln("Session created");
sshSessionsetPassword(CCFCCBUtilCCFCCBLOGINPASSWORD);
Properties sshConfig = new Properties();
sshConfigput("StrictHostKeyChecking", "no");
sshSessionsetConfig(sshConfig);
sshSessionconnect();
Systemoutprintln("Session connected");
Systemoutprintln("Opening Channel");
Channel channel = sshSessionopenChannel("sftp");
channelconnect();
sftp = (ChannelSftp) channel;
Systemoutprintln("Connected to " + host + "");
} catch (Exception e) {
}
return sftp;
}
/
上传文件

@param directory 上传的目录
@param uploadFile 要上传的文件
@param sftp
/
public void upload(String directory, String uploadFile, ChannelSftp sftp) {
try {
sftpcd(directory);
File file = new File(uploadFile);
sftpput(new FileInputStream(file), filegetName());
} catch (Exception e) {
eprintStackTrace();
}
}
/
下载文件

@param directory 下载目录
@param downloadFile 下载的文件
@param saveFile 存在本地的路径
@param sftp
@return
/
public static String download(String directory, String downloadFile, String saveFile, ChannelSftp sftp) {
try {
sftpcd(directory);
File file = new File(saveFile);
FileOutputStream fos = new FileOutputStream(file);
sftpget(downloadFile, fos);
sftpdisconnect();
fosclose();
} catch (Exception e) {
Loginfo("下载文件过程出错:" + egetMessage());
return "false";
}

return "true";
}
/
删除文件

@param directory 要删除文件所在目录
@param deleteFile 要删除的文件
@param sftp
/
public void delete(String directory, String deleteFile, ChannelSftp sftp) {
try {
sftpcd(directory);
sftprm(deleteFile);
} catch (Exception e) {
}
}
/
列出目录下的文件

@param directory 要列出的目录
@param sftp
@return
@throws SftpException
/
public Vector listFiles(String directory, ChannelSftp sftp) throws SftpException {
return sftpls(directory);
}
public static void main(String[] args) {
CCFCCBSftp sf = new CCFCCBSftp();
String host = CCFCCBUtilCCFCCBHOSTNAME;
int port = 22;
String username = CCFCCBUtilCCFCCBLOGINNAME;
String password = CCFCCBUtilCCFCCBLOGINPASSWORD;
String directory = "/ccfccb/904999900099/download/";
//String uploadFile = "D:\\tmp\\uploadtxt";
String downloadFile = "CCF_904999900099_20150317_0001zip";
String saveFile = CCFCCBUtilCCFCCBUploadFilePath + "//" + "CCF_904999900099_20150317_0001zip";
//String deleteFile = "deletetxt";
ChannelSftp sftp = CCFCCBSftpconnect(host, port, username, password);
//sfupload(directory, uploadFile, sftp);
CCFCCBSftpdownload(directory, downloadFile, saveFile, sftp);
//sfdelete(directory, deleteFile, sftp);
try {
sftpcd(directory);
// sftpmkdir("ss");
Systemoutprintln("finished");
} catch (Exception e) {
}
}
}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10235686.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存