`

上传excel 通过url下载文件

 
阅读更多
/**
     * 下载图片
     */
    @RequestMapping("download/picture.json")
    @ResponseBody
    public void downLoadPicture(HttpServletResponse response) throws IOException {
        //        String date = DateUtils.getCurrentDate().replaceAll("-", "").substring(2);
        //        StringBuilder dis = new StringBuilder("attachment");
        //        dis.append(";fileName=").append(new String(date.getBytes("UTF8"), "ISO-8859-1")); // RFC 2184
        //        dis.append(";fileName*=UTF-8''"); //  RFC 5987
        //        response.setHeader("Content-Disposition", dis.toString());
        //response.setHeader("Content-Encoding", "gzip");
        // validExcel(file);

        //        String downloadFilename = "中文.zip";//文件的名称
        //        downloadFilename = URLEncoder.encode(downloadFilename, "UTF-8");//转换中文否则可能会产生乱码
        //        response.setContentType("application/octet-stream");// 指明response的返回对象是文件流
        //        response.setHeader("Content-Disposition", "attachment;filename=" + downloadFilename);
        Map<String, String> urlMap = exportExcelBiz.readExcle();
        //
        //        ZipOutputStream zos = new ZipOutputStream(response.getOutputStream());
        for (String nums : urlMap.keySet()) {
            String url = urlMap.get(nums);
            downloadImage(nums, url);
        }
        //        zos.flush();
        //        zos.close();
    }

    /**
     * 验证文件
     */
    private void validExcel(MultipartFile file) {
        Assert.isFalse(file == null || file.isEmpty(), ErrorEnum.参数不正确, "文件不能未空");
        String extension = FilenameUtils.getExtension(file.getOriginalFilename());
        Assert.isTrue("xls".equals(extension) || "xlsx".equals(extension), ErrorEnum.参数不正确, "文件格式必须为Excel");
    }

    private void downloadImage(String nums, String url) {
        String fileName;
        if (url == null) {
            url = "http://127.0.0.1:7755/no.jpg";
            fileName = "no" + nums + ".jpg";
        } else {
            fileName = nums + ".jpg";
        }
        try {
            File file = new File("image");
            if (!file.exists()) {
                file.mkdirs();
            }
            URL url1 = new URL(url);
            InputStream in = url1.openConnection().getInputStream();
            Image img = ImageIO.read(in);
            BufferedImage tag = new BufferedImage(550, 550, BufferedImage.TYPE_INT_RGB);
            tag.getGraphics().drawImage(img, 0, 0, 550, 550, null);
            OutputStream os = new FileOutputStream(file.getPath() + "/" + fileName);//内存流
            JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(os);
            encoder.encode(tag); // 近JPEG编码
            IOUtils.copy(in, os);
            in.close();
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

/**
     *读取excel
     */
    public Map<String, String> readExcle() throws IOException {
        final String path = "/xls/BJ.xls";
//        String fileName = file.getOriginalFilename();
//        Workbook wb = ExcelLoader.load(file.getInputStream(), fileName);
        Workbook wb = ExcelLoader.load(this.getClass().getResourceAsStream(path));
        List<ExcelRow> rows = ExcelReader.read(wb, 0, 0);
        Assert.isTrue(!rows.isEmpty(), ErrorEnum.参数不正确, "上传数据不能为空");
        Iterator<ExcelRow> iterator = rows.iterator();
        ExcelRow head = iterator.next();
        boolean flag = validHead(head, DOWNLOAD_IMAGE);
        Assert.isTrue(flag, ErrorEnum.参数不正确, "格式不正确,请下载最新格式");
        Map<String, String> urlList = new HashMap<>();
        while (iterator.hasNext()) {
            ExcelRow row = iterator.next();
            String numberInner = row.get("A").trim();
            String number = row.get("B").trim();
            String cateName = row.get("C").trim();
            if(Integer.valueOf(number)==10){
                continue;
            }
            if (numberInner == null) {
                urlList.put(number, null);
                continue;

            }
//            PxCategoryPingxing categoryPingxing;
//            categoryPingxing = categoryPingxingMapper.selectByName(cateName);
//            if(categoryPingxing==null){
//                categoryPingxing  = categoryPingxingMapper.selectByNameFuzzy(cateName);
//            }
//            if(categoryPingxing==null){
//                urlList.put(number, "name error");
//                continue;
//            }
//            Long categoryId =   categoryPingxing.getId();
              String url = packetOutMapper.selectItemImageUrl(numberInner,cateName);
              urlList.put(number,url);
        }
        return urlList;
    }

    /**
     *验证头部
     */
    public boolean validHead(ExcelRow row, String head) {
        boolean flag = false;
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < row.size(); i++) {
            sb.append(row.get(i)).append("\t");
        }
        String str = StringUtils.removeEndIgnoreCase(sb.toString(), "\t");
        if (head.equals(str)) {
            flag = true;
        }
        return flag;
    }
分享到:
评论

相关推荐

    jquery上传下载excel模板

    **一、jQuery上传Excel** 在jQuery中,我们通常借助HTML的`&lt;input type="file"&gt;`元素来实现文件选择。当用户选择文件后,可以监听`change`事件,获取选中的文件。例如: ```html &lt;input type="file" id="excelFile...

    tp5+excel上传下载

    综上所述,这个项目利用ThinkPHP5框架实现了Excel文件的上传和下载功能,通过自定义字段满足不同业务需求,涉及文件上传、文件处理、数据操作等多个环节,并且使用了相应的配置文件和数据库脚本来支持整个流程。

    Vue-Vben-Admin - 自定义上传excel文件弹框组件

    Vue-Vben-Admin 是一个基于 Vue.js 的现代化管理后台模板,它提供了...通过理解和应用这些知识点,开发者可以利用Vue-Vben-Admin的自定义上传Excel文件弹框组件,轻松地集成到自己的项目中,实现高效的数据导入功能。

    java上传excel并且解析入库

    总结起来,Java实现“上传Excel并解析入库”涉及的关键技术包括文件上传(如Spring MVC的MultipartFile)、Excel解析(如Apache POI)以及数据库操作(JDBC或ORM)。通过熟练掌握这些技术,你可以构建出高效、稳定的...

    httpclient和RestfuL风格上传下载文件

    在Java开发中,HTTPClient和RESTful风格的接口被广泛用于实现文件的上传与下载功能。HTTPClient是一个强大的HTTP客户端库,而RESTful是一种轻量级的、基于HTTP协议的软件架构风格,常用于构建Web服务。在分布式系统...

    基于 mongodb 可上传各种格式文件,主要是针对图片,Excel ,word 等文件进行上传。可单独部署。

    对于图片、Excel 和 Word 文件的上传,系统可能需要实现一个用户友好的接口,允许用户通过Web或API上传文件。这个接口通常会处理文件的接收、验证、转换(如果需要的话)和存储到 MongoDB 的过程。在后端,可能有一...

    ajax上传excel

    下面将详细介绍如何实现“ajax上传excel”以及PHP端接收的流程。 1. **前端准备**: - **HTML**:首先,我们需要一个HTML表单让用户选择要上传的Excel文件。通常,我们会用`&lt;input type="file"&gt;`元素来实现这个...

    使用jquery的上传插件:ajaxfileupload.js实现excel文件上传

    在本文中,我们将深入探讨如何使用jQuery的上传插件`ajaxfileupload.js`来实现Excel文件的上传功能。首先,我们需要了解这个插件的工作原理以及它如何与jQuery库结合使用。 `ajaxfileupload.js`是一个基于jQuery的...

    远程上传excel数据到accsee数据库

    3. 导入数据:利用编程语言(如Python、VBA或C#)读取Excel文件中的数据,并通过连接对象将数据插入到Accese数据库的相应表中。这通常涉及到数据读取(如pandas库在Python中的read_excel函数)、数据库操作(如SQL的...

    java解析Excel文件并把数据存入数据库和导出数据为excel文件SpringBoot代码示例

    1、java解析读取excel文件中的数据,并写入数据库。 2、java读取数据库数据,并导出为excel文件。 3、README.md中有详细的操作步骤示例。 使用说明: 1. 先使用postman导入:other/excel相关.postman_collection....

    使用servlet,jsp实现Excel文件的上传和数据库的导入

    在Web开发中,经常需要处理用户上传的文件,例如Excel表格。这个场景中,我们将讨论...通过这样的流程,我们可以创建一个完整的Web应用,使用户能够上传Excel文件并将数据导入到数据库,为数据分析或报告生成提供便利。

    springboot上传excel导入到数据库完整demo(后端代码)

    - 压缩包中的`ExcelDemo`可能包含了这些类,以及`pom.xml`文件(Maven项目)或`build.gradle`文件(Gradle项目),用于管理依赖和构建项目。 7. **运行与部署**: - 项目构建完成后,可以使用Maven的`mvn package...

    前端开发-基于js+vue的excel表格上传下载前端实现.zip

    这个压缩包文件"前端开发-基于js+vue的excel表格上传下载前端实现.zip"显然提供了使用这两种技术来实现在Web应用中处理Excel表格上传和下载功能的示例代码。以下是关于这个主题的详细知识点: 1. JavaScript(JS)...

    文件上传通过二维码下载

    为了实现这一功能,开发者需要设计一个支持文件上传的接口,该接口需要处理各种文件格式,包括但不限于PDF、Excel、Word等常见文档类型。同时,服务器端还需要提供一个生成二维码的服务,该服务能够接收文件链接,...

    在EBS FORM中上传文件

    在EBS Form中实现文件上传功能是企业日常操作中经常遇到的需求,例如上传合同、报表或其他业务文档。这个过程涉及到多个层面,包括前端Form的设计、后端处理逻辑以及文件存储策略。以下将详细介绍如何在EBS Form中...

    .NET webapi实现文件上传功能

    3. **控制器(Controller)**:MVC的控制器中不需要特别的处理,因为文件上传是通过WebAPI进行的。但是,你可以在MVC控制器中处理返回的API响应,例如显示上传结果消息。 三、注意事项 - 文件大小限制:默认情况下...

    Java 上传文件到 SharePoint

    对于SharePoint的REST API,我们可以通过发送POST请求到特定的URL来上传文件,URL格式通常是`https://&lt;sharepoint-site-url&gt;/_api/web/GetFolderByServerRelativeUrl('&lt;folder-path&gt;')/Files/Add(url='&lt;file-name&gt;',...

    前端js解析/读取excel文件

    在前端开发中,有时我们需要处理用户上传的Excel文件,例如从Excel中提取数据进行展示或者进一步的处理。本文将深入探讨如何使用JavaScript在浏览器端解析和读取Excel文件,主要基于开源库`js-xlsx`。 `js-xlsx`是...

    Flex 向 java服务器 上传文件

    文件上传是通过调用FileReference的upload()方法完成的,该方法接受一个URLRequest对象,其中包含服务器端处理文件上传的URL。 在Java服务器端,我们需要一个接收并处理文件上传的控制器。Spring MVC是一个常用的...

    解决layui上传文件提示上传异常,实际文件已经上传成功的问题

    layui上传文件提示上传异常,实际文件已经上传成功 原因:上传回调的方法接收的参数应该是json格式的,之前返回的是String,所以一直走异常的方法 @ResponseBody @RequestMapping("/web/upload") public JSONObject ...

Global site tag (gtag.js) - Google Analytics