没有合适的资源?快使用搜索试试~ 我知道了~
首页Java上传下载文件并实现加密解密
资源详情
资源评论
资源推荐

Java上传下载文件并实现加密解密上传下载文件并实现加密解密
主要介绍了Java上传下载文件并实现加密解密,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
使用 Jersey 服务器实现上传,使用 HTTP 请求实现下载
引入依赖引入依赖
在 pom.xml 中添加 Jersey 相关依赖
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-client</artifactId>
<version>1.18.1</version>
</dependency>
创建工具类创建工具类
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.ClientHandlerException;
import com.sun.jersey.api.client.UniformInterfaceException;
import com.sun.jersey.api.client.WebResource;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.UUID;
public class FileUtils {
// 加密/解密文件的密钥
public static final int CRYPTO_SECRET_KEY = 0x99;
public static int FILE_DATA = 0;
/**
* 加密/解密 文件
* @param srcFile 原文件
* @param encFile 加密/解密后的文件
* @throws Exception
*/
public static void cryptoFile(File srcFile, File encFile) throws Exception {
InputStream inputStream = new FileInputStream(srcFile);
OutputStream outputStream = new FileOutputStream(encFile);
while ((FILE_DATA = inputStream.read()) > -1) {
outputStream.write(FILE_DATA ^ CRYPTO_SECRET_KEY);
}
inputStream.close();
outputStream.flush();
outputStream.close();
}
/**
* MultipartFile 生成临时文件
* @param multipartFile
* @param tempFilePath 临时文件路径
* @return File 临时文件
*/
public static File multipartFileToFile(MultipartFile multipartFile, String tempFilePath) {
File file = new File(tempFilePath);
// 获取文件原名
String originalFilename = multipartFile.getOriginalFilename();
// 获取文件后缀
String suffix = originalFilename.substring(originalFilename.lastIndexOf("."));
if (!file.exists()) {
file.mkdirs();
}
// 创建临时文件
File tempFile = new File(tempFilePath + "\" + UUID.randomUUID().toString().replaceAll("-", "") + suffix);
try {
if (!tempFile.exists()) {
// 写入临时文件
multipartFile.transferTo(tempFile);
}
} catch (IOException e) {
e.printStackTrace();
}
return tempFile;
}
/**
* 上传文件
* @param fileServerPath 文件服务器地址
* @param folderPath 存放的文件夹路径(比如存放在文件服务器的 upload 文件夹下,即 ”/upload“)
* @param uploadFile 需要上传的文件
* @param isCrypto 是否加密
* @return String 文件上传后的全路径
*/
public static String uploadByJersey(String fileServerPath, String folderPath, File uploadFile, boolean isCrypto) {
String suffix = uploadFile.getName().substring(uploadFile.getName().lastIndexOf("."));
String randomFileName = UUID.randomUUID().toString().replaceAll("-", "") + suffix;
String fullPath = fileServerPath + folderPath + "/" + randomFileName;
try {
if (isCrypto) {
// 创建加密文件
File cryptoFile = new File(uploadFile.getPath().substring(0, uploadFile.getPath().lastIndexOf(".")) + "crypto" + uploadFile.getPath().substring(uploadFile.getPath().lastIndexOf(".")));
// 执行加密
cryptoFile(uploadFile, cryptoFile);
// 保存加密后的文件
uploadFile = cryptoFile;
}
// 创建 Jersey 服务器
Client client = Client.create();
WebResource wr = client.resource(fullPath);
// 上传文件
wr.put(String.class, fileToByte(uploadFile));
} catch (Exception e) {
e.printStackTrace();
}
return fullPath;
}
/**
* 下载文件
* @param url 文件路径
* @param filePath 文件保存路径
* @param fileName 文件名称(包含文件后缀)
* @param isCrypto 是否解密
* @return File
*/
public static File downloadByURL(String url, String filePath, String fileName, boolean isCrypto) {
















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0