gpt4 book ai didi

java - 无法从 Spring 表单中获取图像

转载 作者:IT老高 更新时间:2023-10-28 13:46:56 24 4
gpt4 key购买 nike

在从 spring form 获取文件时,我得到 null 值,如果我在其余字段中尝试此代码,我的意思是 non 多部分输入类型它工作正常。在调试时,我从行中获取 null 值。如果我尝试从现有文件夹中获取 image,即 webapp 下的图像,并且该 url 能够在浏览器中显示图像,但无法使用浏览器从 files 读取值,并且对不起我的英语不好

编辑如果我评论图像代码,应用程序工作正常,但是当我引入图像代码时出现错误

MultipartFile 文件 = domain.getImage();//这是空的

这是相关代码 Controller

@RequestMapping(value = "/form", method = RequestMethod.GET)
public String formInputGet(Model model) {
model.addAttribute("domain", new Domain());
return "form";
}



@RequestMapping(value = "/form", method = RequestMethod.POST)
public String formInputPost(@ModelAttribute("domain") Domain domain, HttpServletRequest httpServletRequest) {

MultipartFile file = domain.getImage();
if (image== null)
throw new NullPointerException("unable to fetch "+file); //getting NPE everytime
String rootDirectory = httpServletRequest.getSession().getServletContext().getRealPath("/");
if (domain.getImage() != null && !domain.getImage().isEmpty())
try {
File path = new File(rootDirectory + "images\\" + domain.getFirstName() + ".png");
file.transferTo(path);
} catch (IllegalStateException | IOException e) {
e.printStackTrace();
}
repositiry.addToList(domain);
return "redirect:/";
}

form.jsp

<form:form modelAttribute="domain" enctype="multipart/form-data">
First Name<br>
<form:input path="firstName" />
<br>Last Name :<br>
<form:input path="lastName" />
<br>upload Image<br>
<form:input path="image" type="file" />
<hr>
<input type="submit">
</form:form>

dispatcherServlet

<mvc:annotation-driven />
<mvc:resources location="/images/" mapping="/images/**" />
<context:component-scan base-package="com" />
<bean id="multipartReslover"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="10240000" />
</bean>
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/views/" />
<property name="suffix" value=".jsp" />
</bean>

我添加了一些额外的代码来查看我是否得到了 domain,因为 null 是真的。我不知道如何解决这个问题。

添加文件检查后出现错误

java.lang.NullPointerException: unable to fetch : null

domain.java

public class Domain {
private String firstName;
private String lastName;
private MultipartFile image;

//getters and setters

注意如果有其他工作方式,也欢迎任何有用的答案:)

感谢任何帮助,谢谢:)

最佳答案

你应该做@kuhajeyen 说的一切,如果从域对象获取图像不顺利,你可以试试这个

public String formInputPost(@ModelAttribute("domain") Domain domain,
@RequestParam("image") MultipartFile imagefile,
HttpServletRequest httpServletRequest ) {

imagefile.transferTo(path);

}

edit :- 将表单内的 method 属性更改为 POST 否则它将发出 GET 请求。

<form:form modelAttribute="domain" method="post" enctype="multipart/form-data">

并用这一行替换您的输入类型文件,我认为尝试将输入类型文件与对象绑定(bind)时存在一些问题。

<input type="file" name="image" />

关于java - 无法从 Spring 表单中获取图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39806141/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com