C#实现多文件上传,写到文件夹中,获取文件信息以及下载文件和删除文件

前台:.js

//上传附件
function uploadAttachment() {
    if ($("#Tipbind").attr(‘checked‘)) {
        var ip = $("#TunBandIP").val();
        if ($.trim(ip) == 0) {
            return $.messager.show({ title: ‘提示‘, msg: ‘请先选择IP‘ });
        }
        $(‘#ImprotDlg‘).dialog(‘open‘);
        uploadFy(ip);
        $("#T_ExcelName").val("");
        $("#T_SheetName").val("");
    }
    else {
        $.messager.show({ title: ‘提示‘, msg: ‘只有绑定的ip才能上传附件‘ });
    }
}

var oncomplete = false;
function uploadFy(ip) {
    $("#uploadify").uploadify({
        ‘swf‘: ‘/Scripts/uploadify/uploadify.swf‘,
        ‘uploader‘: ‘/AjaxTerminalInfo/UploadAttachments.cspx‘,
        ‘formData‘: { ‘ip‘: ip },
        ‘folder‘: ‘/Attachments‘,
        ‘queueID‘: ‘fileQueue‘,
        ‘method‘: ‘get‘,
        ‘auto‘: false,
        ‘sizeLimit‘: 20480000,
        ‘multi‘: true,
        ‘fileDesc‘: ‘请选择文件‘,
        ‘fileExt‘: ‘*‘,
        ‘width‘: 110,
        ‘height‘: 28,
        ‘buttonText‘: ‘请选择文件‘,
        ‘scriptData‘: {},
        ‘onSelect‘: function (e, queueId, fileObj) {
            qId = queueId;

        },
        ‘onUploadSuccess‘: function (file, data, response) {
            var datamsg = eval(" val= (" + data + ")");

            if (datamsg.Success) {
                $.messager.show({ title: ‘提示‘, msg: datamsg.Success });
                $(‘#ImprotDlg‘).dialog(‘close‘);
            } else {
                $.messager.show({ title: ‘提示‘, msg: datamsg.Error });
            }
            oncomplete = true;
        },
        ‘onUploadError‘: function (file, errorCode, errorMsg, errorString) {
            if (file.size > 20480000) {
                $.messager.show({ title: ‘提示‘, msg: "上传文件不能超过20M" });
            }
        },
        ‘onCancel‘: function (file) {

        }
    });
}

//开始上传
function uploadFile() {
    var filename = $("#T_ExcelName").val();
    if (filename == ‘‘) {
        $.messager.show({ title: ‘提示‘, msg: ‘请选择上传文件!‘ });
        return;
    }
    $(‘#uploadify‘).uploadify(‘upload‘, ‘*‘);
}

//取消上传
function cancelUploadFile() {
    $(‘#uploadify‘).uploadify(‘cancel‘, ‘*‘);
    $(‘#ImprotDlg‘).dialog(‘close‘);
}

//查看附件
function showAttachment() {
    var ip = $("#TunBandIP").val();
    if ($.trim(ip) == 0) {
        return $.messager.show({ title: ‘提示‘, msg: ‘请先选择IP‘ });
    }
    $("#attachmentDlg").dialog(‘open‘);

    var dgObj = {
        queryParams: { ip: ip },
        singleSelect: true,
        url: ‘/AjaxTerminalInfo/GetAttachmentsByIp.cspx‘,
        method: ‘get‘,
        border: false,
        toolbar: [{
            text: ‘下载‘,
            iconCls: ‘icon-import‘,
            handler: function () {
                var row = $("#dg").datagrid(‘getChecked‘);
                if (row.length == 0) {
                    return $.messager.show({ title: ‘提示‘, msg: ‘请先选择文件进行下载‘ });
                }
                for (var i = 0; i < row.length; i++) {
                    $(‘#attachmentForm‘).attr(‘action‘, ‘/AjaxTerminalInfo/DownloadAttachment.cspx?filepath=‘ + row[i].FilePath + "&filename=" + row[i].FileName);
                    $(‘#attachmentForm‘).submit();
                }

            }
        }, {
            text: ‘删除‘,
            iconCls: ‘icon-no‘,
            handler: function () {
                alert(1)
            }
        }],
        columns: [[
            { field: ‘ck‘, checkbox: true },
            { field: ‘FileName‘, title: ‘文件名‘, width: 310, align: ‘left‘, halign: ‘center‘ },
            { field: ‘UploadDateTime‘, title: ‘上传日期‘, width: 120, align: ‘center‘ }
        ]]
    };

    $("#dg").datagrid(dgObj);
}

/// <summary>
/// 删除文件
/// </summary>
/// <param name="filepath"></param>
/// <param name="filename"></param>
/// <returns></returns>
[Action]
[SessionMode(SessionMode.Support)]
public Object DeleteAttachment(string filepath, string filename)
{
Message message = new Message();
try
{
//判断文件是不是存在
if (File.Exists(filepath))
{
//如果存在则删除
File.Delete(filepath);
message.Success = "删除文件成功";
message.data = true;
}
else
{
message.Success = "文件不存在";
message.data = false;
}
return JsonConvert.SerializeObject(message);
}
catch (Exception e)
{
log.Debug("出错原因:" + e.Message);
message.Error = "删除文件失败:" + e.Message;
message.data = false;
return JsonConvert.SerializeObject(message);
}
}

 

后台:.cs

/// <summary>
        /// 上传附件
        /// </summary>
        /// <returns></returns>
        [Action]
        [SessionMode(SessionMode.Support)]
        public object UploadAttachments()
        {
            var message = new Message();
            try
            {
                HttpPostedFile file = HttpContext.Current.Request.Files["Filedata"];
                var ip = HttpContext.Current.Request.Params["ip"];
                string path = "/Attachments/" + ip + "/";//相对路径

                if (file != null && file.ContentLength > 0)
                {
                    string savePath = Path.Combine(HttpContext.Current.Server.MapPath(path));
                    if (!Directory.Exists(savePath))
                        Directory.CreateDirectory(savePath);
                    file.SaveAs(savePath + file.FileName);
                    message.Success = "上传成功";
                }
                else
                {
                    message.Error = "文件不能为空";
                }
            }
            catch (Exception e)
            {
                log.Debug("出错原因:" + e.Message);
                message.Error = "出错原因:" + e.Message;
                throw;
            }
            return JsonConvert.SerializeObject(message);
        }

        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        [Action]
        [SessionMode(SessionMode.Support)]
        public object GetAttachmentsByIp(string ip)
        {
            try
            {
                string path = "/Attachments/" + ip + "/";//相对路径
                string savePath = Path.Combine(HttpContext.Current.Server.MapPath(path));
                var dgData = new DataGridData<DiyFile>();
                string[] fileNames = Directory.GetFiles(savePath);
                foreach (var fileName in fileNames)
                {
                    var fi = new FileInfo(fileName);
                    var fileinfo = new DiyFile();
                    fileinfo.FileName = fi.Name;
                    fileinfo.FilePath = fileName;
                    fileinfo.UploadDateTime = fi.LastAccessTime;
                    dgData.rows.Add(fileinfo);
                }
                dgData.total = fileNames.Count();
                var dgJson = JsonConvert.SerializeObject(dgData);
                return dgJson;
            }
            catch (Exception e)
            {
                log.Debug("出错原因:" + e.Message);
                throw;
            }
        }

        [Action]
        [SessionMode(SessionMode.Support)]
        public void DownloadAttachment(string filepath,string filename)
        {
            try
            {
                using (var fs = new FileStream(filepath, FileMode.OpenOrCreate))
                {
                    var bytes = new byte[(int)fs.Length];
                    fs.Read(bytes, 0, bytes.Length);
                    fs.Close();
                    HttpContext.Current.Response.Clear();
                    HttpContext.Current.Response.ContentType = "application/octet-stream";
                    //通知浏览器下载文件而不是打开
                    HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;  filename=" + HttpUtility.UrlEncode(filename, Encoding.UTF8));
                    HttpContext.Current.Response.BinaryWrite(bytes);
                    HttpContext.Current.Response.Flush();
                    fs.Close();
                }
            }
            catch (Exception e)
            {
                log.Debug("出错原因:" + e.Message);
                throw;
            }
        }
时间: 2024-09-30 07:03:49

C#实现多文件上传,写到文件夹中,获取文件信息以及下载文件和删除文件的相关文章

文件上传插件Uploadify在Struts2中的应用,完整详细实例

->最近由于项目需要使用到一个上传插件,在网上发现uploadify挺不错,所以决定使用它,但是官网文档和例子是php的,而项目是SSI框架的,所以自己对uploadify在struts2中的使用进行了一番研究,最终实现了.发现网上关于这方面的资料很少,而且有的一两篇例子还不大全,网友提问质疑很多,所以,下面我特将我的代码公布: --------------------------------------------------------------------- 步骤一: 到官网上下载upl

C&amp;C控制服务的设计和侦测方法综述——DDoS攻击,上传从宿主机偷窃的到的信息,定时给感染机文件加密勒索等。

这篇文章总结了一些我在安全工作里见到过的千奇百怪的C&C控制服务器的设计方法以及对应的侦测方法,在每个C&C控制服务先介绍黑帽部分即针对不同目的的C&C服务器设计方法,再介绍白帽部分即相关侦测办法,大家来感受一下西方的那一套.这里的白帽部分有一部分侦测方法需要一些数据和统计知识,我也顺便从原理上简单讨论了一下用数据进行安全分析的方法,从数学和数据原理上思考为什么这么做,可以当作数据科学在安全领域的一些例子学习一下. 0x00 什么是C&C服务器 C&C服务器(又称C

如何将ISO文件上传到XenServer本地存储中

如何将ISO文件上传到XenServer本地存储中 从XenServer5.0.0之后ISO文件不能直接拷贝到/opt/xensource/packages/目录下,该目录下只能用于存放Xenserver Tools文件,那当用户要挂载ISO进行虚拟机安装时有什么方法呢?有两种方法: 一.通过CIFS挂载Windows共享文件夹的方式,这种方式操作简单,通过XenCenter的New Storage向导即可完成(操作略),而且当ISO较多且变动频繁时,强力推荐该种方法 二.将ISO文件直接上传到

文件上传 servlet 从HttpServletRequest.getInputStream()中获得消息内容

前段时间采用spring谢了文件上传,但是跟手机端调试时,发现他们的插件只能使用原生的数据流的形式上传文件,根据HTTP的规范看了下上传文件的消息体,写了如下的方法,供大家使用: @Note(note = "bigAnt:servlet上传文件", author = "zhangwenbo")    @RequestMapping("modifyPictureByStream2")    @ResponseBody    public Simpl

multipart/form-data 文件上传表单中 传递参数无法获取的原因!

1.什么是multipart/form-data 首先我们需要明白在html中的enctype属性, enctype:规定了form表单在发送到服务器时候编码方式.他有如下的三个值. ①application/x-www-form-urlencoded.默认的编码方式. 但是在用文本的传输和MP3等大型文件的时候,使用这种编码就显得 效率低下. ②multipart/form-data . 指定传输数据为二进制类型,比如图片.mp3.文件. ③text/plain. 纯文体的传输. 空格转换为

andorid人员文件上传服务器的搭建(tomcat中)

1.将.war文件复制到tomcat服务器webapps下,启动服务器即可 2.访问工程路径http://localhost:8080/FileUpload/index.jsp即可测试上传 3.测试成功,作为android开发人员,怎么用代码完成上传在此不再啰嗦了,因为重点是服务器搭建成功了. 原文地址:https://www.cnblogs.com/wzqnxd/p/9359062.html

(十)SpringBoot的文件上传

一:添加commons-fileupload依赖 打开pom文件添加 <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.1</version> </dependency> 二:添加系统变量 打开core→constant文件,添加文件保存路径 //

selenium之 文件上传所有方法整理总结

本文转载"灰蓝"的原创博客.http://blog.csdn.net/huilan_same/article/details/52439546 文件上传是所有UI自动化测试都要面对的一个头疼问题,今天博主在这里给大家分享下自己处理文件上传的经验,希望能够帮助到广大被文件上传坑住的seleniumer. 首先,我们要区分出上传按钮的种类,大体上可以分为两种,一种是input框,另外一种就比较复杂,通过js.flash等实现,标签非input 我们分别对这两种进行分析: 1.input标签

thinkphp文件上传

TP框架中的文件上传类似于php原生的文件上传方法,只不过TP框架将文件上传的方法封装成类来使用 1.首先我们在控制器类文件中写出一个上传的显示页面的方法 public function shangchuan(){ $this->show(); } 同时我们在相对应的视图文件夹view中的创建出前端显示页面 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.o

带进度条的文件上传

Ajax技术——带进度条的文件上传 1.概述 在实际的Web应该开发或网站开发过程中,经常需要实现文件上传的功能.在文件上传过程中,经常需要用户进行长时间的等待,为了让用户及时了解上传进度,可以在上传文件的同时,显示文件的上传进度条.运行本实例,如图1所示,访问文件上传页面,单击“浏览”按钮选择要上传的文件,注意文件不能超过50MB,否则系统将给出错误提示.选择完要上传的文件后,单击“提交”按钮,将会上传文件并显示上传进度. 2.技术要点 主要是应用开源的Common-FileUpload组件来