Я пытаюсь сохранить изображения на моем локальном компьютере и их информацию в базе данных.Но никакие данные не вставляются в базу данных.Файл создается, но его содержимое отсутствует (имеет 0 байт).
Я использую REST API hibernate и spring mvc.Я получаю данные из углового приложения 7.Программа работает на реальном сервере, но не на моем локальном компьютере.
Основная причина
java.lang.UnsupportedOperationException
java.base/sun.nio.fs.WindowsFileSystemProvider.readAttributes(WindowsFileSystemProvider.java:193)
java.base/java.nio.file.Files.readAttributes(Files.java:1763)
com.bmis.app.controller.ProductController.saveProduct(ProductController.java:329)
com.bmis.app.controller.ProductController.addProduct(ProductController.java:443)......................</p>
</blockquote>
<p>
Это мой код:
private ResponseEntity saveProduct(Integer id, @Valid @RequestBody Product product, MultipartFile[] images, BindingResult bindingResult, HttpServletRequest request) throws IOException {
HashMap response = new HashMap();
boolean success = false;
List errors = new ArrayList();
HttpStatus httpStatus = HttpStatus.BAD_REQUEST;
String message = "";
Map data = new HashMap();
Slugify slg = new Slugify();
String directory = "C:/Users/dellm4700/Documents/images";
Set<ProductImage> productImages = new HashSet<>();
for (MultipartFile multipartFile : images) {
ProductImage productImage = new ProductImage();
productImage.setSize(multipartFile.getSize());
productImage.setExtension(multipartFile.getContentType());
productImage.setActualImageName(new Date().getTime() + multipartFile.getOriginalFilename());
productImage.setStandardImageName(multipartFile.getOriginalFilename());
productImage.setNameAtFilestore(slg.slugify(productImage.getActualImageName()));
productImage.setThumbnailImageName("thumb_"+ new Date().getTime() + multipartFile.getOriginalFilename());
productImage.setProduct(product);
productImages.add(productImage);
File imageFile = new File(directory + "/" + productImage.getActualImageName());
imageFile.setReadable(true, false);
imageFile.createNewFile();
Set<PosixFilePermission> perms = Files.readAttributes(imageFile.toPath(), PosixFileAttributes.class).permissions();
try {
multipartFile.transferTo(imageFile);
perms.add(PosixFilePermission.OTHERS_READ);
perms.add(PosixFilePermission.GROUP_READ);
perms.add(PosixFilePermission.OTHERS_READ);
Files.setPosixFilePermissions(imageFile.toPath(), perms);
} catch (IOException e) {
e.printStackTrace();
}
File thumbFile = new File(directory + "/" + productImage.getThumbnailImageName());
thumbFile.setReadable(true, false);
thumbFile.createNewFile();
Set<PosixFilePermission> thumbperms = Files.readAttributes(thumbFile.toPath(), PosixFileAttributes.class).permissions();
perms.add(PosixFilePermission.OTHERS_READ);
perms.add(PosixFilePermission.GROUP_READ);
perms.add(PosixFilePermission.OTHERS_READ);
Files.setPosixFilePermissions(thumbFile.toPath(), perms);
try {
Thumbnails.of(directory + "/" + productImage.getActualImageName())
.size(200, 200).keepAspectRatio(false)
.toFile(thumbFile);
} catch (IOException e) {
e.printStackTrace();
}
}
productImages.addAll(product.getProductImages());
product.setProductImages(productImages);
for (CustomAttribute customAttribute : product.getCustomAttributes()) {
customAttribute.setProduct(product);
}
Claims claims = (Claims) request.getAttribute("claims");
User user = userService.findById((Integer) claims.get("id"));
productValidator.validate(product, bindingResult);
if (id != null) {
Product sourceProduct = productService.findById(id);
// sourceProduct.getPrices().clear();
if (!(StringUtility.compare(sourceProduct.getName(), product.getName())) && (productService.findByName(product.getName()) != null)) {
bindingResult.rejectValue("name", null, "Product with same name already exists");
message = "Fill the form properly";
} else if (!(StringUtility.compare(sourceProduct.getBarcode(), product.getBarcode())) && (productService.findByBarCode(product.getBarcode()) != null)) {
message = "Fill the form properly";
bindingResult.rejectValue("barcode", null, "Product with same barcode already exists");
}
// DaoUtility.copyNonNullProperties(product, sourceProduct);
// product = sourceProduct;
} else {
if (productService.findByName(product.getName()) != null) {
message = "Fill the form properly";
bindingResult.rejectValue("name", null, "Product with same name already exists");
} else if (productService.findByBarCode(product.getBarcode()) != null) {
message = "Fill the form properly";
bindingResult.rejectValue("barcode", null, "Product with same barcode already exists");
}
}
try {
if (!bindingResult.hasErrors()) {
for (Price price : product.getPrices()) {
price.setProduct(product);
}
if (id == null) {
productService.save(product);
} else {
productService.update(product);
}
data.put("products", product);
success = true;
message = "Product Successfully added";
httpStatus = HttpStatus.OK;
} else {
for (FieldError error : bindingResult.getFieldErrors()) {
message = "Fill the form properly";
errors.add(new ErrorMessage(error.getField(), error.getDefaultMessage()));
}
}
} catch (Exception e) {
errors.add(new ErrorMessage("error", e.getMessage()));
}
response.put("success", success);
response.put("errors", errors);
response.put("message", message);
response.put("data", data);
return new ResponseEntity(response, httpStatus);
}