做Excel上传踩的坑

因最近项目需要,所以要做一个Excel上传并解析,但在上传这块我就踩了几天的坑,菜是原罪啊,

我一开始是先在自己的spring boot项目中做的实验,以下是spring boot中的:

前端:

<!DOCTYPE html>
<html lang="en">
<object></object>
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script typet="text/javascript" src="http://libs.baidu.com/jquery/1.9.1/jquery.min.js"></script>
    <script>
        /*导入Excel*/
        function uploadExcel() {
            /*#load:为按钮,点击后生成一个隐藏的input file标签*/
            $('#uploadExcel').after('<input type="file" id="upload_xls" name="file" style="display:none" onchange ="uploadFile()" enctype="multipart/form-data">');
            document.getElementById("upload_xls").click();
        }
        function uploadFile() {
            //选择文件
            var filePath = $("#upload_xls").val();
            //设置上传文件类型
            if (filePath.indexOf(".xls") != -1 || filePath.indexOf(".xlsx") != -1) {
                var form = new FormData();
                form.append('file', $('#upload_xls')[0].files[0]);
                //上传文件 'http://localhost:8081/upFile/upload'
                /*var obj=document.getElementById("file");
                var File_Url=obj.attributes["href"].nodeValue;*/
                $.ajax({
                    url: 'http://localhost:8081/upFile/upload',
                    type: 'post',
                    data: form,
                    cache: false,
                    //阻止Ajax将参数转成成String类型的键值对,需要设置processData属性为false,
                    processData: false,
                    //form的enctype="multipart/form-data"才能上传文件。Ajax的默认编码方式是application/x-www-form-urlencoded
                    contentType: false,

                    success: function (r) {
                        if (r.state == 200) {
                            alert(r.msg);
                        }
                        if (r.state == 300) {//上传文件有错误信息
                            var filename = r.data;
                            if (confirm(r.msg)) {
                                location.href = 'download.do?filename=' + filename;
                            }
                        }
                    }
                });
            } else {
                alert("请选择正确的文件格式!");
                return false;
            }
        }
    </script>
</head>
<body>
<button  id="uploadExcel" onclick="uploadExcel()"> 上传文件</button>
<!--<a id="file" href="http://localhost:8081/upFile/upload"></a>

<form action="upFile/upload" method="post" enctype="multipart/form-data">
    <p><input type="file" name="upload"></p>
    <p><input type="submit" value="submit"></p>
</form>-->
</body>
</html>
package com.answer.server.control;


import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;

@RestController
@RequestMapping(name = "upFile",value = "upFile")
@CrossOrigin
public class UpFile {
    @RequestMapping(method= RequestMethod.POST, value="/upload")
    private String upload(@RequestParam(value = "file",required = false) MultipartFile upload, HttpServletRequest request) throws IOException {
        String flag = "";
        //String path = request.getRealPath("/") + "../dexing/politik";   // 存放文件的路径
        String path ="C:/";
        File file = new File(path, upload.getOriginalFilename());
        if (file.exists()) {  // 判断文件是否已经存在
            flag = "1";
            return flag;
        } else {
            try {
                upload.transferTo(file);   // 将文件写到指定路径下
            } catch (Exception e) {
                flag = "-1";
                e.printStackTrace();
                return flag;
            }
        }
        flag = "0";
        return flag;
    }

}

这个是在网上找的例子,它是好使的,原博客地址我忘记了,但还是十分感谢分享,然后我移到了我那古老的项目中springMVC搭的,一开始直接移过去的,然后前端各种报404,我改url改的心态直接炸了,最后在周末放纵了一把,然后周一来又试了试,一行行的删代码,终于发现在后端接受的时候将MultipartFile改为File它可以找到了,曙光啊,然后就百度了MultipartFile 的用法,妹的,spring boot是自动配置好了,spring MVC还需要xml的配置以及引jar包,唉~菜是原罪, https://www.cnblogs.com/gxlaqj/p/9931333.html  我是在这看到的,啥都不说了,解析去了,

xml配置:

<!-- 上传文件配置 -->
	<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
		<property name="defaultEncoding" value="UTF-8" />
		<!-- 指定所上传文件的总大小,单位字节。注意maxUploadSize属性的限制不是针对单个文件,而是所有文件的容量之和 -->
		<property name="maxUploadSize" value="10240000" /><!-- 上传的最大size  -->
		<property name="maxInMemorySize" value="4096" />
		<property name="resolveLazily" value="true" /><!-- 懒接收 -->
	</bean>

依赖:

<!-- 添加依赖包,才可以上传文件,否则请求400 -->
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.4</version>
    </dependency>
    <dependency>
      <groupId>commons-fileupload</groupId>
      <artifactId>commons-fileupload</artifactId>
      <version>1.3.1</version>
    </dependency>
    <!-- 添加依赖包,才可以上传文件,否则请求400  end-->

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dream答案

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值