受密码保护的 zip 文件问题
password protected zip file issue
用户上传文件,我需要用密码保护文件,然后将其压缩到与我的代码所在的服务器不同的存储服务器中运行。所以我使用 AESEncrypter 加密文件并 jcraft.jsch.ChannelSftp 将文件传输到服务器。
public ResponseEntity<ResponseWrapper> uploadFile(@RequestParam("uploads") MultipartFile file) throws Exception {
FileOutputStream fos = new FileOutputStream("outputfile.zip");
AESEncrypter aesEncrypter = new AESEncrypterBC();
aze=new AesZipFileEncrypter(fos, aesEncrypter);
aze.add(file.getOriginalFilename(), file.getInputStream(), "test123");
JSch ssh = new JSch();
Session session = ssh.getSession("username", "Servername", 22);
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
session.setPassword("*****");
session.connect();
Channel channel = session.openChannel("sftp");
channel.connect();
sftp = (ChannelSftp) channel;
sftpChannel.put(file.getInputStream(), "/storedfiles/outputfile.zip");
}
文件正在传输到服务器,但是当我下载传输的文件并尝试打开它时显示 "Errors were found opening "..“你无法提取文件..你想解决问题吗”。不确定我为什么会遇到这个问题,它还在本地服务器中创建了一个文件,是哪一行导致的?
我尝试替换这一行
aze=new AesZipFileEncrypter(fos, aesEncrypter);
和
aze=new AesZipFileEncrypter("outputfile.zip", aesEncrypter);
但努力工作。
我把文件放在远程服务器上,在输出流中读取它,然后用密码保护,解决了我的问题。
public ResponseEntity<ResponseWrapper> uploadFile(@RequestParam("uploads") MultipartFile file) throws Exception {
JSch ssh = new JSch();
Session session = ssh.getSession("username", "Servername", 22);
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
session.setPassword("*****");
session.connect();
Channel channel = session.openChannel("sftp");
channel.connect();
sftp = (ChannelSftp) channel;
OutputStream os = sftp.put("/storedfiles/outputfile.zip");
AESEncrypter aesEncrypter = new AESEncrypterBC();
aze=new AesZipFileEncrypter(os, aesEncrypter);
aze.add(file.getOriginalFilename(), file.getInputStream(), "test123");
if(aze != null) {
aze.close();
}
}
用户上传文件,我需要用密码保护文件,然后将其压缩到与我的代码所在的服务器不同的存储服务器中运行。所以我使用 AESEncrypter 加密文件并 jcraft.jsch.ChannelSftp 将文件传输到服务器。
public ResponseEntity<ResponseWrapper> uploadFile(@RequestParam("uploads") MultipartFile file) throws Exception {
FileOutputStream fos = new FileOutputStream("outputfile.zip");
AESEncrypter aesEncrypter = new AESEncrypterBC();
aze=new AesZipFileEncrypter(fos, aesEncrypter);
aze.add(file.getOriginalFilename(), file.getInputStream(), "test123");
JSch ssh = new JSch();
Session session = ssh.getSession("username", "Servername", 22);
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
session.setPassword("*****");
session.connect();
Channel channel = session.openChannel("sftp");
channel.connect();
sftp = (ChannelSftp) channel;
sftpChannel.put(file.getInputStream(), "/storedfiles/outputfile.zip");
}
文件正在传输到服务器,但是当我下载传输的文件并尝试打开它时显示 "Errors were found opening "..“你无法提取文件..你想解决问题吗”。不确定我为什么会遇到这个问题,它还在本地服务器中创建了一个文件,是哪一行导致的?
我尝试替换这一行
aze=new AesZipFileEncrypter(fos, aesEncrypter);
和
aze=new AesZipFileEncrypter("outputfile.zip", aesEncrypter);
但努力工作。
我把文件放在远程服务器上,在输出流中读取它,然后用密码保护,解决了我的问题。
public ResponseEntity<ResponseWrapper> uploadFile(@RequestParam("uploads") MultipartFile file) throws Exception {
JSch ssh = new JSch();
Session session = ssh.getSession("username", "Servername", 22);
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
session.setPassword("*****");
session.connect();
Channel channel = session.openChannel("sftp");
channel.connect();
sftp = (ChannelSftp) channel;
OutputStream os = sftp.put("/storedfiles/outputfile.zip");
AESEncrypter aesEncrypter = new AESEncrypterBC();
aze=new AesZipFileEncrypter(os, aesEncrypter);
aze.add(file.getOriginalFilename(), file.getInputStream(), "test123");
if(aze != null) {
aze.close();
}
}