上传功能

前台:用Uploader插件写好前台

var uploader1 = null;
    var uploadExcelUrl = ‘@Url.Action(uploadAction, controllerName)‘;//后台获取前台导入的文件

function InitUploader() {
        uploader1 = $.fn.cfwinUploader.upload({
            //baseUrl: ‘/Scripts/cfw.webuploader/‘,
            postUrl: uploadExcelUrl,
            // 定义按钮
            btnAddFile: $(‘#uploadExcel‘),
            // 设置上传类型,0为图片,1为文件,2为文件和图片
            type: 1,
            // 限制文件个数
            fileNumLimit: 10,
            // 请求参数
            params: { tenatName: ‘‘, blobId: ‘‘ },
            // 文件限制
            configure: {
                fileMaxSize: 15,
                fileExt: ‘xls,xlsx‘,
            },
            // 回调方法
            callback: {
                // 上传过程中触发
                uploadProgress: function (file, percentage) {
                    $("#" + file.id + " .progress-bar").css(‘width‘, (percentage * 100).toFixed(2) + "%");
                },
                uploadComplete: function (file) { //不管成功或者失败,文件上传完成时触发
                },
                uploadSuccess: function (file, data) {
                    uploader1.reset();
                    if (data) {
                        if (data.hasOwnProperty("success")) {
                            if (data.success) {
                                if (data.Result.length > 0) {
                                    data.Result.forEach(function(el, index) {
                                   
                                    });
                                    $.messager.showInfoCenter(‘系统提示‘, ‘上传数据成功!‘);
                                }
                            } else {
                                $.messager.showErrorCenter(‘错误消息‘, data.message);
                            }
                        } else {
                            $.messager.alert(‘系统提示‘, "抱歉,你不具有当前操作的权限!", ‘error‘, function () {
                                //window.location.href = window.location.href;
                            });
                        }
                    } else {
                        $.messager.showErrorCenter(‘错误消息‘, ‘上传数据失败!‘);
                    }
                    $(‘#datagrid‘).datagrid(‘reload‘);
                    $(‘#‘ + file.id).remove();
                },
                uploadError: function (file, reason) {
                    $.messager.showErrorCenter(‘错误消息‘, ‘上传数据失败,失败原因:‘ + reason);
                },
                onFileQueued: function (file) {
                    uploader1.upload();
                }
            }
        });
    }

后台: //导入
        //上传组件
        public JsonResult uploadAction(HttpPostedFileBase file, string detailList = null)
        {
            var json = new JsonSerializer();
            var list = new List<StoreOtherInDetailDTO>();
            if (detailList != null)
            {
                JsonReader reader = new JsonTextReader(new StringReader(detailList));
                list = json.Deserialize<List<StoreOtherInDetailDTO>>(reader);
            }
            return GetServiceJsonResult(() =>
            {
                var result = ScmService.OtherInExcelTemplate(file.InputStream, list);//Service层处理具体代码
                return result;
            });
        }

Service层处理具体代码

 public List<List<RowValue>> GetWorksheetRowListData(int sheetIndex)
        {
            try
            {
                var sheet = Workbook.GetSheetAt(sheetIndex);
                if (sheet == null)
                    return null;
                var result = new List<List<RowValue>>();
                var headerRow = sheet.GetRow(0);
                var cellCount = headerRow.LastCellNum;
                var maxRow = sheet.LastRowNum;
                for (var i = 0; i <= maxRow; i++)
                {
                    var row = sheet.GetRow(i);
                    var emptyRow = true;
                    if (row == null) continue;

                    cellCount = cellCount != 0 ? cellCount : row.LastCellNum;
                    var columns = new List<RowValue>();
                    for (int j = 0; j < cellCount; j++)
                    {
                        var cell = row.GetCell(j);

                        var alphabet = IndexToColumn(j + 1);
                        var headerCell = headerRow.GetCell(j);
                        var headerValue = GetCellValue(headerCell);
                        var columnName = !string.IsNullOrEmpty(headerValue)
                            ? headerValue
                            : i.ToString();
                        var cellValue = string.Empty;
                        if (cell != null)
                        {
                            cellValue = GetCellValue(cell);
                        };
                        if (cellValue != null && !string.IsNullOrEmpty(cellValue.Trim()))
                        {
                            emptyRow = false;
                        }
                        var rowValue = new RowValue
                        {
                            RowId = i,
                            ColumnId = j,
                            CellName = alphabet,
                            ColumnName = columnName,
                            CellValue = cellValue
                        };
                        columns.Add(rowValue);
                    }
                    if (!emptyRow)
                    {
                        result.Add(columns);
                    }
                }
                return result;
            }
            catch (Exception ex)
            {
                if (Workbook != null)
                {
                    Workbook.Close();
                    Workbook = null;
                }
                LogUtil.LogError("Couldn‘t get the row‘s List<RowValue> data by sheet name.", ex.Message + Environment.NewLine + ex.StackTrace);
                return null;
            }
        }
时间: 2024-10-09 07:51:52

上传功能的相关文章

struts2中实现文件上传功能

在web项目中,文件上传.头像上传这样的功能经常是要用到的,下面就以在struts2中实现文件上传功能为例子,简单地理一下文件上传功能的编码思路. 项目目录结构 项目源代码 web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:x

使用Commons FileUpLoad组件实现文件上传功能

Commons 是Apache开放的源码组织的一个java子项目,该项目主要涉及一些开发中常用的模块,如文件上传,命令行处理,数据库连接池等.FileUpLoad就是其中的一个用于处理HTTP文件上传的子项目.Commons FileUpLoad组建具有以下几个特点: 1.使用简单:Commons FileUpLoad组件可以方便的嵌入JSP文件中,在JSP文件中仅编写少量代码就可完成文件上传功能,十分方便. 2.能够全程控制上传的内容:使用Commons FileUpLoad组件提供的对象及操

HTML 5 File API:文件拖放上传功能

即将到来的 html5 规范有几个特性,以致使 HTML 远远超出其本身作为一种标记语言的能力,并为 Web 开发者提供了一些强大的脚本工具.负责监督 HTML5 发展进程的 W3C 组织,刚刚出版了一份强有力的规格草案 – HTML5 File API 接口功能. 该 API 的设计初衷,是改善基于浏览器的 Web 应用程序处理文件上传的方式,使文件直接拖放上传成为可能.草案定义了新的输入选项 <input type=”file”> 来处理文件上传. 更为惊喜的是,该 API 为开发者提供了

nodejs 实现简单的文件上传功能

首先需要大家看一下目录结构,然后开始一点开始我们的小demo. 文件上传总计分为三种方式: 1.通过flash,activeX等第三方插件实现文件上传功能. 2.通过html的form标签实现文件上传功能,优点:浏览器兼容好. 3.通过xhr level2的异步请求,可以百度formData对象. 这里使用2做个练习. node插件请看下package.json文件 { "name": "upload", "version": "0.1

配置php.ini实现PHP文件上传功能

本文介绍了如何配置php.ini实现PHP文件上传功能.其中涉及到php.ini配置文件中的upload_tmp_dir.upload_max_filesize.post_max_size等选项,这些选项是文件上传成败的关键.我们以php.5.3.5的Windows版本为例说明. php.ini中文件上传功能配置选项说明 用文本工具(推荐EditPlus)打开php.ini 配置文件,查找 File Uploads ,在这个区域有以下3个选项: file_uploads = On 是否允许HTT

Spring MVC使用commons fileupload实现文件上传功能

通过Maven建立Spring MVC项目,引入了Spring相关jar依赖. 1.为了使用commons fileupload组件,需要在pom.xml中添加依赖: <properties> <spring.version>3.0.7.RELEASE </spring.version> <junit.version>3.8.1</junit.version> <fileupload.version>1.2.2</fileupl

如何在Web页面中集成文件上传功能

当前,个人主页制作非常流行.当用户开发好自己的页面时,需要将文件传输到服务器上,解决这个问题的方法之一 是运行FTP服务器并将每个用户的FTP默认目录设为用户的Web主目录,这样用户就能运行FTP客户程序并上传文件到指定的 Web目录.由于Windows NT 和 Windows98均不提供直接的基于窗口形式的FTP客户程序,用户必须懂得如何使用基于命令行 的FTP客户,或掌握一种新的基于窗口形式的FTP客户程序.因此,这种解决方案仅对熟悉FTP且富有经验的用户来说是可行 的. 如果我们能把文件

[Bootstrap-插件使用]Jcrop+fileinput组合实现头像上传功能

很久没有更新博客了,再不写点东西都烂了. 这次更新一个小内容,是两个插件的组合使用,实现头像上传功能. 业务需求: 头像上传功能,要对上传的文件进行剪切,且保证头像到服务器时必须是正方形的. 优化<input type="file">的显示样式,基础的样式实在太难看了. 上传的头像需要进行质量压缩跟大小裁剪,以减缓浏览器的压力. 成果预览: 使用到的技术插件 Jcrop:用于前端"裁剪"图片 bootstrap-fileinput:用于前端优化上传控件样

一个简单的blog系统(三) 增加文件上传功能

1. 一个完整的博客怎么能缺少图片呢,目前上传文件的方法有三种: (1)使用Express自带的文件上传功能,不涉及数据库. (2)使用Formidable外部模块,不涉及数据库. (3)上传到MongoDB,涉及到数据库. 可以看出,第一种方式最简单,Express通过bodyParser()解析请求体,因此我们可以使用bodyParser()来实现文件的上传功能. 2.实现过程 2.1 首先打开header.ejs,在<li><a href="/post" tit

用c++开发基于tcp协议的文件上传功能

用c++开发基于tcp协议的文件上传功能 2005我正在一家游戏公司做程序员,当时一直在看<Windows网络编程> 这本书,把里面提到的每种IO模型都试了一次,强烈推荐学习网络编程的同学阅读,比 APUE 讲的更深入 这是某个银行广告项目(p2p传输视频)的一部分 IO模型采用的阻塞模式,文件一打开就直接上传 用vc 2003编译,生成win32 dll 麻雀虽小五脏俱全,CSimpleSocket,CReadStream dll 输出一虚类 extern "C" __d