0
실례합니다. 그 동안 나는 백엔드에서 springboot와 앞에서 각도 2로 전자 문서 관리를 개발합니다. 지금까지 내 데이터베이스의 다운로드 및 스토 케지는 잘 작동하지만 내 springboot에서 openssl 구현자를 사용한 암호화 및 암호 해독은 작동하지 않습니다.openssl을 springboot/mySql 및 dropzonejs와 함께 사용하는 방법
클래스는 FileUpload
@Table(name = "table_doc")
@SuppressWarnings("serial")
@Entity
@Document(indexName = "tabledoc", type = "tabledoc")
public class FileUpload implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String filename;
@Lob
private byte[] file;
private String mimeType;
private Long size;
public FileUpload(String filename, byte[] file, String mimeType, Long size) {
super();
this.filename = filename;
this.file = file;
this.mimeType = mimeType;
this.size = size;
}
public FileUpload() {
super();
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getFilename() {
return filename;
}
public void setFilename(String filename) {
this.filename = filename;
}
public byte[] getFile() {
return file;
}
public void setFile(byte[] file) {
this.file = file;
}
public String getMimeType() {
return mimeType;
}
public void setMimeType(String mimeType) {
this.mimeType = mimeType;
}
public Long getSize() {
return size;
}
public void setSize(Long size) {
this.size = size;
}
}
클래스 FileController :
@RequestMapping(value ="/uploadLobCrypt",method = RequestMethod.POST)
public ResponseEntity <String> fileCrypt(MultipartHttpServletRequest request,MultipartFile multiPartFile) throws IOException, InvalidKeyException, NoSuchAlgorithmException, NoSuchPaddingException, IllegalBlockSizeException, BadPaddingException, InvalidKeySpecException {
Iterator<String> itr = request.getFileNames();
String uploadedFile = itr.next();
MultipartFile file = request.getFile(uploadedFile);
String mimeType = file.getContentType();
String filename = file.getOriginalFilename();
byte[] bytes = file.getBytes();
Long size = file.getSize();
FileUpload fileCrypte = new FileUpload(filename, bytes, mimeType,size);
fileLobService.fileCrypt(multiPartFile,fileCrypte);
return new ResponseEntity<String>("{}", HttpStatus.OK);
}
클래스 FileLobService
@Service("fileLobService")
@Transactional
public class FileLobService {
@Autowired
FileUploadRepository fileUploadRepository;
// Retrouver un fichier
public FileUpload findByFilename(String filename) {
return fileUploadRepository.findByFilename(filename);
}
public FileUpload findById(Long id) {
return fileUploadRepository.findById(id);
}
public Long deleteFileById(Long id) {
return fileUploadRepository.deleteFileById(id);
}
public String deleteFileByFilename(String filename) {
return fileUploadRepository.deleteFileByFilename(filename);
}
public void File(File file) {
fileUploadRepository.File(file);
}
// Upload the file
public void uploadFile(FileUpload fileName) {
fileUploadRepository.saveAndFlush(fileName);
}
public void fileCrypt(MultipartFile multiPartFile, FileUpload fileCrypte)
throws IOException, InvalidKeyException, NoSuchAlgorithmException, NoSuchPaddingException,
IllegalBlockSizeException, BadPaddingException, InvalidKeySpecException {
// ecriture clee public et public dans un path
String publicKeyPath = "C:\\OpenSSL-Win64\\bin\\public.der";
String privateKeyPath = "C:\\OpenSSL-Win64\\bin\\private.pk8";
fileCrypte.setFile(multiPartFile.getBytes());
fileCrypte.setFilename(multiPartFile.getOriginalFilename());
fileCrypte.setMimeType(multiPartFile.getContentType());
fileCrypte.setSize(multiPartFile.getSize());
File file = new File(multiPartFile.getOriginalFilename());
multiPartFile.transferTo(file);
byte[] dataBytes = FileUtils.readFileToByteArray(file);
Cryptage cryptage = new Cryptage();
byte[] encryptedBytes = cryptage.encryptFile(dataBytes, publicKeyPath);
FileUtils.writeByteArrayToFile(file, encryptedBytes);
fileUploadRepository.saveCryptedFile(file);
}
}
클래스 FileUploadRepository
public interface FileUploadRepository extends JpaRepository<FileUpload, Long> {
FileUpload findByFilename(String filename);
FileUpload findById(Long id);
Long deleteFileById(Long id);
String deleteFileByFilename(String filename);
void File(File file);
void saveCryptedFile(java.io.File file);
}
내가 서버를 시작할 때 지금, 나는 다음과 같은 스택 추적 얻을 :
Caused by: org.springframework.data.mapping.PropertyReferenceException: No
property saveCryptedFile found for type FileUpload!
at org.springframework.data.mapping.PropertyPath.<init>
(PropertyPath.java:77) ~[spring-data-commons-1.13.7.RELEASE.jar:na]
at
org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:329)
~[spring-data-commons-1.13.7.RELEASE.jar:na]
at
org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:309)
~[spring-data-commons-1.13.7.RELEASE.jar:na]
at org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:272)
~[spring-data-commons-1.13.7.RELEASE.jar:na]
at org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:243)
~[spring-data-commons-1.13.7.RELEASE.jar:na]
at org.springframework.data.repository.query.parser.Part.<init>
(Part.java:76) ~[spring-data-commons-1.13.7.RELEASE.jar:na]
은 당신이 다운로드 파일을 암호화 SpringBoot에 OpenSSL을 사용에 대한 어떤 생각을 가지고 수행을 내 MySQL 데이터베이스에 저장되기 전에 dropzonejs?