`

上传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;
    }
分享到:
评论

相关推荐

    FileManageSys.rar_word excel管理_共享文件_图片_批量上传_批量多个excel

    8.文件转发功能,可将多个文件下载地址通过邮件或短信发送给他人下载,并可设置下载次数及天数。 9.在线编辑文本文件、播放任何影音文件、查看图片内容、对共享文件及目录添加文字注释功能。 10.在线编辑Word,Excel...

    .NET 导入CSV 或 Excel

    Type=Price&msg=提示:只能上传由系统导出的CSV文档,并每次上传只能上传一个文档.&keepThis=true&TB_iframe=true&height=480&width=580&TB_iniframe=true&modal=true" window.top.tb_show('文件上传', url, false)...

    AjaxFileUpload实现文件异步上传(功能实现代码).rar

    AjaxFileUpload实现文件异步上传(功能实现代码).rar AjaxFileUpload实现文件异步上传, 文件域添加change事件,改变文件域时执行上传文件功能 $("#upload-excel-file").bind("change", function() {  $....

    AngularJS基于http请求实现下载php生成的excel文件功能示例

    使用PHPExcel插件的同学们都知道,导出excel是直接将生成内容修改content-type来将内容作为文件下载的,这时候需要页面上有一个url,通过点击来下载。 那么问题来了,如果在生成excel时有请求参数,只能通过js的http...

    详解django三种文件下载方式

    在实际的项目中很多时候需要用到下载功能,如导excel、pdf或者文件下载,当然你可以使用web服务自己搭建可以用于下载的资源服务器,如nginx,这里我们主要介绍django中的文件下载。 实现方式:a标签+响应头信息...

    Android代码-Android基于腾讯X5内核的WebView(超级浏览器)

    1、文件浏览(支持pdf/ppt/doc/excel/txt) 2、文件上传(JS) 3、文件下载 4、Android与JS交互 5、自定义交互(进度条、下拉回弹) 6、视频播放 1、添加依赖和配置 根目录build.gradle文件添加如下配置: ...

    Helper Master

    Public class FileDownHelper 文件下载帮助类 Public class FileHelper 文件操作帮助类 Public class FileUpHelper 文件上传帮助类 Public class FileValidation 图片检测类 Public class FormulaHelper 数学...

    NTKO文档在线编辑控件4.0.1.2

    10 支持在提交编辑文档的同时,提交表单的其它数据,包括其它的文件上传 采用我们独创的“智能提交”技术,让您在提交编辑文档的同时,提交表单的其它数据,以及表单中其它的文件上传。这可以让您更加快速的集成现有...

    Python+django实现文件下载

    缺点:word excel是直接弹框下载,对于image txt 等文件的下载方式是直接在新页面打开。 (2)方法二、在python后台对下载内容进项处理,返回内容直接弹出下载框。 #后台处理函数 def downloadFile&#40;req&#41;: ...

    flexpaper 无logo print 打印 按钮 可用参数 屏蔽

    在OnlineReading.jsp的第二行,是你想在线浏览的文件URL(地址,不要脱离web项目,否则转义下),请手动修改(或则,通过传参数,动态加载)。 上传的这个flexpaper,我用jQuery简单的实现了,flexpaper动态地根据...

    NTKO文档在线编辑控件独立安装包4.0.6.5(适合TA2009\2010\2011版本)

    ★ 在下载和上载Office文档时不会产生临时文件使用流数据作为Office文档的数据源,不会产生临时文件。因此不会引起防病毒软件如Norton Antivirus的错误警告。 ★ 能够禁止用户从文档拷贝数据 IsNoCopy属性可以禁止...

    .net 调用Outlook 批量发送邮件

    VS2012开发的,上传Excel,Excel中的内容为邮件的正文信息,Excel模板为Upload文件夹中文件 .net调用Outlook 批量发送邮件,可指定Outlook中的账号来发送邮件 解决调用Outlook时弹出对话框问题, 带安装程序。 如果本...

    DotNetTextBox V6.0.10 商业版 下载 (已知最新)

    1)去掉现在基本没法使用的插入EXCEL表格功能,改为无组件的导入EXCEL文档功能(测试中,导入excel文档必须符合数据库格式,否则导入数据将不全)。 2)更新编辑器的部分文字资源。 3)修正4号与5号字体大小一样的BUG! ...

    C#200个基础工具类大全.zip

    CSV文件转换;DataTable转实体;Excel操作类;FTP操作类;...IP辅助类;JSON操作;...上传下载;时间操作类;视频帮助类;数据展示控件绑定数据类;条形码帮助类;图片操作类;文件操作类;序列化;压缩解压缩;邮件;字符串

    excel-add-in-poc

    Excel加载项概念证明 笔记 您需要用户可访问的Web服务器。 我使用进行本地开发和... 如果更改清单文件,请单击“刷新”,然后单击“上传我的加载项”,然后提供到清单文件的链接。 有一些关键的可用功能: 在窗格中

    原生JS封装ajax 传json,str,excel文件上传提交表单(推荐)

    由于项目中需要在提交ajax...url: uri, type: 'POST', dataType: 'json', data: data, }) .done(cb) .fail(function() { console.log("error"); }) .always(function() { console.log("complete"); }); } 原生ajax封装

    基于Python的接口自动化框架+源代码+文档说明

    ### 更新说明: - 本次版本更新,在原有框架基础上进行了优化: - 支持多sheet编写测试用例,一个sheet编写一个业务流程 ...下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------

    sa3_xlsx_parse_.zip

    将xlsx文件通过FormData,以 POST 方式上传到下述接口,字段名:files,支持上传多个文件 ``` http://localhost:8080/parseXlsx ``` 2. 文件读取结果将以接口响应的形式(application/json)返回 3. 响应结果...

    Discuz! v7.2 Bulid 20101020 简体UTF8 独立安装包.zip

    Discuz! 7.2版本充分听取了来自社区运营一线的想法和需求,增加和改进30余处与社区门户运营密切相关的功能与细节。...下载并解压缩文件,上传文件到论坛根目录,覆盖原来的文件即可 问题修复: 后台安全BUG。

    Discuz! v7.2 Bulid 20101020 简体GBK 独立安装包.zip

    Discuz! 7.2版本充分听取了来自社区运营一线的想法和需求,增加和改进30余处与社区门户运营密切相关的功能与细节。...下载并解压缩文件,上传文件到论坛根目录,覆盖原来的文件即可 问题修复: 后台安全BUG。

Global site tag (gtag.js) - Google Analytics