springmvc 怎么将文件上传到linux服务器

springmvc 怎么将文件上传到linux服务器,第1张

Spring MVC为文件上传提供了直接的支持,这种支持是通过即插即用的MultipartResolver实现的。Spring使用Jakarta Commons FileUpload 技术实现了一个MultipartResolver实现类:CommonsMultipartResolver。

Spring MVC上下文中默认没有装配MultipartResolver,因此默认情况下不能处理文件的上传工作。如果想要使用Spring的文件上传功能,需要先在上下文中配置MultipartResolver。

第一步:配置MultipartResolver

使用CommonsMultipartResolver配置一个MultipartResolver解析器:

<bean id="multipartResolver" class="orgspringframeworkwebmultipartcommonsCommonsMultipartResolver"

p:defaultEncoding="UTF-8"

p:maxUploadSize="5242880"

p:uploadTempDir="/upload/temp"

/>

defaultEncoding必须和用户JSP的pageEncoding属性一致,以便正确读取表单的内容。uploadTempDir是文件上传过程所使用的临时目录,文件上传完成后,临时目录中的临时文件会被自动清除。

第二步:编写文件上传表单页面和控制器

JSP页面如下:

<%@ page language="java" import="javautil" pageEncoding="utf-8"%>

<%

String path = requestgetContextPath();

String basePath = requestgetScheme()+"://"+requestgetServerName()+":"+requestgetServerPort()+path+"/";

%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 401 Transitional//EN">

<html>

<head>

<base href="<%=basePath%>">

<title>My JSP 'indexjsp' starting page</title>

<meta >

首选做一个简单的案例,也就是单个文件上传的案例。(这个案例是基于SpringBoot上面的,所以大家首先得搭建好SpringBoot这个框架)

前台HTML代码:

[html] view plain copy

<html>

<body>

<form action="/upload" method="POST" enctype="multipart/form-data">

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

<input type="submit" value="Upload"/>

</form>

</body>

</html>

后台接收代码:

[java] view plain copy

/

 文件上传具体实现方法;

 @param file

 @return

/

@RequestMapping("/upload")

@ResponseBody

public String handleFileUpload(@RequestParam("file") MultipartFile file) {

if (!fileisEmpty()) {

try {

/

 这段代码执行完毕之后,上传到了工程的跟路径; 大家自己扩散下思维,如果我们想把上传到

 d:/files大家是否能实现呢? 等等;

 这里只是简单一个例子,请自行参考,融入到实际中可能需要大家自己做一些思考,比如: 1、文件路径; 2、文件名;

 3、文件格式; 4、文件大小的限制;

/

BufferedOutputStream out = new BufferedOutputStream(

new FileOutputStream(new File(

filegetOriginalFilename())));

Systemoutprintln(filegetName());

outwrite(filegetBytes());

outflush();

outclose();

} catch (FileNotFoundException e) {

eprintStackTrace();

return "上传失败," + egetMessage();

} catch (IOException e) {

eprintStackTrace();

return "上传失败," + egetMessage();

}

return "上传成功";

} else {

return "上传失败,因为文件是空的";

}

}

这样就可以实现对multipart/form-data类型文件的接收了。那如果是多个文件外加多个字段呢,下面接着看下一个多个文件上传的案例。

前台HTML界面:

[html] view plain copy

<!DOCTYPE html>

<html xmlns=">

xmlns:sec=">

<head>

<title>Hello World!</title>

</head>

<body>

<form method="POST" enctype="multipart/form-data" action="/batch/upload">

<p>文件1:<input type="text" name="id" /></p>

<p>文件2:<input type="text" name="name" /></p>

<p>文件3:<input type="file" name="file" /></p>

<p><input type="submit" value="上传" /></p>

</form>

</body>

</html>

后台接收代码:

[java] view plain copy

@RequestMapping(value = "/batch/upload", method = RequestMethodPOST)

@ResponseBody

public String handleFileUpload(>

Multipart>

List<MultipartFile> files = ((Multipart>

getFiles("file");

String name=paramsgetParameter("name");

Systemoutprintln("name:"+name);

String id=paramsgetParameter("id");

Systemoutprintln("id:"+id);

MultipartFile file = null;

BufferedOutputStream stream = null;

for (int i = 0; i < filessize(); ++i) {

file = filesget(i);

if (!fileisEmpty()) {

try {

byte[] bytes = filegetBytes();

stream = new BufferedOutputStream(new FileOutputStream(

new File(filegetOriginalFilename())));

streamwrite(bytes);

streamclose();

} catch (Exception e) {

stream = null;

return "You failed to upload " + i + " => "

+ egetMessage();

}

} else {

return "You failed to upload " + i

+ " because the file was empty";

}

}

return "upload successful";

}

这样就可以实现对多个文件的接收了功能了。

form的enctype=”multipart/form-data” 这个是上传文件必须的

2applicationContextxml中 <bean id=”multipartResolver” class=”orgspringframeworkwebmultipartcommonsCommonsMultipartResolver”/> 关于文件上传的配置不

@Controller  

public class UploadAction {  

  

    @RequestMapping(value = "/uploaddo")  

    public String upload(@RequestParam(value = "file", required = false) MultipartFile file, >

1单文件上传

11、页面

文件上传需要将表单的提交方法设置为post,将enctype的值设置为”multipart/form-data”。

<form action="${pageContextrequestcontextPath}/test/uploaddo" method="post" enctype="multipart/form-data">

<input type="file" name="img"><br />

<input type="submit" name="提交">

</form>

12 控制器

@Controller

@RequestMapping("/test")

public class MyController {

@RequestMapping(value = "/uploaddo", method = RequestMethodPOST)

// 这里的MultipartFile对象变量名跟表单中的file类型的input标签的name相同,

//所以框架会自动用MultipartFile对象来接收上传过来的文件,

//当然也可以使用@RequestParam("img")指定其对应的参数名称

public String upload(MultipartFile img, >

参考文章:

>

在访问web目录下资源时,requestgetServletContext()getRealPath()经常被使用,该代码作用是获取项目的绝对路径,例如

D:\demo\JAVA EE\Spring MVC\metadata\plugins\orgeclipsewstservercore\tmp0\wtpwebapps\Fortis\imgProduct

至于其和本地路径

D:\demo\JAVA EE\Spring MVC\Fortis\WebContent

的关系和两者之间的实际应用,下面会举例解释:

tomcat服务器启动时,项目会被加载到tomcat的项目路径下,此时项目的资源获取在项目路径而不是初始存放的本地路径,且每次tomcat部署时会清空并且重新上传项目数据

例如上传时候

//上传并显示

@RequestMapping("/updateimg2")

@ResponseBody

public Map<String, Object> updateimg2(MultipartFile file,>

以上就是关于springmvc 怎么将文件上传到linux服务器全部的内容,包括:springmvc 怎么将文件上传到linux服务器、如何用SpringBoot框架来接收multipart/form-data文件、java-SpringMVC 后台怎么获取前台jsp页面中file中的文件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9735038.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存