温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

JavaWeb中怎么实现文件上传

发布时间:2021-07-13 11:06:24 来源:亿速云 阅读:224 作者:Leah 栏目:大数据

这期内容当中小编将会给大家带来有关JavaWeb中怎么实现文件上传,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

引入依赖

当然在引入依赖之前我们需要先创建一个被Maven管理的Web Project,创建方式我就不多说了,小伙伴们如果不熟悉可以参考这篇文章SpringMVC基础配置(通过注解配置,非xml配置)。创建成功之后在SpringMVC框架的基础之上再添加如下两个依赖就行了:

        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.3.2</version>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.5</version>
        </dependency>

两个依赖库,一个用来解决文件上传,一个简化IO操作。

创建文件上传页面

这个是一个简单的jsp页面,我在resources文件夹中创建views文件夹,在views文件夹中创建index.jsp文件,如下:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>文件上传</title>
</head>
<body>
<form action="upload" enctype="multipart/form-data" method="post">
    <input type="file" name="file" />
    <input type="submit" value="上传" />
</form>
</body>
</html>

这个页面很简单,没啥好说的,注意action是upload就行了。

配置SpringMVC

这一步算是比较关键的一步,但是这里只有一个新Bean,我们先来看看类:

@Configuration
@EnableWebMvc
@ComponentScan("org.sang")
public class MVCConfig extends WebMvcConfigurerAdapter{
    @Bean
    public InternalResourceViewResolver viewResolver() {
        InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
        viewResolver.setPrefix("/WEB-INF/classes/views/");
        viewResolver.setSuffix(".jsp");
        viewResolver.setViewClass(JstlView.class);
        return viewResolver;
    }

    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/index").setViewName("/index");
    }
    @Bean
    public MultipartResolver multipartResolver() {
        CommonsMultipartResolver resolver = new CommonsMultipartResolver();
        resolver.setMaxUploadSize(1000000);
        return resolver;
    }
}

这个类在前面几篇博客中已经反复说过好几次了,这里只是多了一个multipartResolver方法,该方法用来提供一个MultipartResolver的Bean,该方法中主要根据业务需求对CommonsMultipartResolver进行配置,我这里以限制上传文件大小为例。

Web配置

这个也是老生常谈,前面几篇博客也说了n多次了,不赘述:

public class WebInit implements WebApplicationInitializer {
    public void onStartup(ServletContext servletContext) throws ServletException {
        AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();
        context.register(MVCConfig.class);
        context.setServletContext(servletContext);
        ServletRegistration.Dynamic servlet = servletContext.addServlet("dispatcher", new DispatcherServlet(context));
        servlet.addMapping("/");
        servlet.setLoadOnStartup(1);
    }
}

编写Controller

@Controller
public class UploadController {
    @ResponseBody
    @RequestMapping(value = "/upload",method = RequestMethod.POST,produces = "text/plain;charset=UTF-8")
    public String upload(MultipartFile file) {
        try {
            FileUtils.writeByteArrayToFile(new File("/home/sang/workspace/"+file.getOriginalFilename()),file.getBytes());
            return "上传成功";
        } catch (IOException e) {
            e.printStackTrace();
            return "上传失败";
        }
    }
}

这里通过Common-IO 中提供的相关方法,直接将上传文件的byte数组写成文件就行。
这个时候运行项目,在浏览器中打开index.jsp,如下:
JavaWeb中怎么实现文件上传

上述就是小编为大家分享的JavaWeb中怎么实现文件上传了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI