Good morning Community.
I have the typical problem of not being able to upload an image to a directory on the server, I have tried several alternatives but without success. Here I leave part of my code.
Configuration Bean
@Bean
public CommonsMultipartResolver multipartResolver()
{
CommonsMultipartResolver resolver = new CommonsMultipartResolver();
resolver.setDefaultEncoding("utf-8");
return resolver;
}
Domain Class
private MultipartFile producImage;
public MultipartFile getProductImage() {
return producImage;
}
public void setProducImage(MultipartFile producImage) {
this.producImage = producImage;
}
Controller Class
@RequestMapping(value = "/products/add", method = RequestMethod.POST)
public String processAddNewProductForm(@ModelAttribute("newProduct") Product newProduct, BindingResult result, HttpServletRequest request)
{
String[] suppressedFields = result.getSuppressedFields();
if(suppressedFields.length > 0)
{
throw new RuntimeException("Attempting to bind disallowed fields " + StringUtils.arrayToCommaDelimitedString(suppressedFields));
}
MultipartFile productImage = newProduct.getProductImage(); // productImage siempre es null!!!!!!!!!!!
String rootDirectory = request.getSession().getServletContext().getRealPath("/");
if(productImage != null && !productImage.isEmpty())
{
try
{
productImage.transferTo(new File(rootDirectory + "resources\images\" + newProduct.getProductId() + ".png"));
}
catch(Exception ex)
{
throw new RuntimeException("Product Image Saving failed", ex);
}
}
productService.addProduct(newProduct);
return "redirect:/market/products";
}
FrontEnd: addproduct.jsp
<form:form method="POST" modelAttribute="newProduct" class="form-horizontal" enctype="multipart/form-data">
<fieldset>
<legend>Add New Product</legend>
<div class="form-group">
<label class="control-label col-lg-2" for="productImage">
<spring:message code="addProduct.form.productImage.label" />
</label>
<div class="col-lg-10">
<form:input id="productImage" path="productImage" type="file" class="form:input-large" />
</div>
</div>
<div class="form-group">
<div class="col-lg-offset-2 col-lg-10">
<input type="submit" id="btnAdd" class="btn btn-primary" value ="Add"/>
</div>
</div>
</fieldset>
</form:form>
Up to here the code I use to upload the image but without success yet.
Thanks for your help.