linweijianzero 2017-07-11 09:20 采纳率: 0%
浏览 1449
已采纳

关于JSP画面上传Excel到服务器的问题

补充一下,用的框架是SSM框架

画面代码:

<form id="file_form" action="../whiteList/uploadFile" enctype="multipart/form-data" method="post" style="display:none">
<input type="file" id="fileHiden" name="fileHiden" style="display:none" onchange="fileChange()" accept="application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"/>
</form>

前台代码:

function fileChange(){
    $('#file_form').submit();
}

后台代码:


    @RequestMapping("/uploadFile")
    @ResponseBody
    public String uploadFile(HttpServletRequest request,HttpServletResponse response){
    // TODO
    request.getParameter("fileHiden");// 拿不到上传文件

    }

问题描述:
又查了一天了,由于从来没做过上传,如果有人愿意回答我,可否讲得详细点,给个方向查,已经浪费两天了。
原本的需求是,用户填好数据后,上传一个固定格式的Excel,我要做的是,读取这个EXCEL,再遍历行,到数据库中做个追加。但是查了好多,还是没有头绪。还请大神给个方向,愿意的话,教教我,真的很重要。

现在最先的问题是,我得拿到这个文件,再读取EXCEL。。没悬赏币急死了。。。

  • 写回答

3条回答 默认 最新

  • stone_shigz 2017-07-11 14:07
    关注

    是SpringMVC ?
    利用spring中提供的MultipartFile接口实现上传功能
    MultipartFile类中两个方法区别:
    getName : 获取表单中文件组件的名字
    getOriginalFilename : 获取上传文件的原名
    transferTo(File newFile);把上传的文件转存到指定文件中

    spring配置文件中加入以下配置:
    <!-- SpringMVC上传文件时,需要配置MultipartResolver处理器 --> 
    <!-- 注意:bean的名字不要改,一定要叫multipartResolver --> 
    <bean name="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> 
        <property name="defaultEncoding" value="UTF-8"/> 
        <!-- 指定所上传文件的总大小不能超过指定字节大小 --> 
        <property name="maxUploadSize" value="20000000"/>
    </bean>
    
    
    jsp页面代码:
    <form action="upload/test" method="post" enctype="multipart/form-data">
        <input type="file" name="file"><br>
        <input type="file" name="file"><br>
        <input type="submit" value="上传">
    </form>
    
    
    Controller中的代码:
    @Controller
    @RequestMapping("/upload")
    public class UploadController {
    
        @RequestMapping("/show")
        public String showUploadPage(){
            return "upload";
        }
    
        @RequestMapping("/test")
        public String upload(@RequestParam("file") MultipartFile[] files, HttpServletRequest request) {
            if (files != null && files.length > 0) {
                for (MultipartFile file : files) {
                    // 保存文件
                    saveFile(request, file);
                }
            }
            // 重定向
            return "redirect:/upload/show";
        }
    
        private void saveFile(HttpServletRequest request, MultipartFile file) {
            // 判断文件是否为空
            if (!file.isEmpty()) {
                try {
                    //保存的文件路径
                    //需要的话可以给文件名上加时间戳
                    String filePath = request.getServletContext().getRealPath("/") + "upload/"
                            + file.getOriginalFilename();
                    File newFile = new File(filePath);
                    //文件所在目录不存在就创建
                    if (!newFile.getParentFile().exists()){
                        newFile.getParentFile().mkdirs();
                    }
    
                    // 转存文件
                    file.transferTo(newFile);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
    
        }
    
    }
    
    
    注意:在上传文件的同时,还可以接收其他正常的单个的值,例如username、age等,同时也可以把这些单个的值自动封装成User对象
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 请上面代码做什么处理或什么混淆
  • ¥15 英雄联盟自定义房间置顶
  • ¥15 W5500网线插上无反应
  • ¥15 如何用字典的Key,显示在WPF的xaml中
  • ¥15 weautomate读取Excel表格信息然后填写到网页一直报错,如何解决?
  • ¥15 C#如何在Webview2中获取网页验证码
  • ¥15 esp32烧录失败,具体情况在图片上
  • ¥15 selenium安装报错
  • ¥15 在node.js中无法安装yarn
  • ¥15 python程序修改