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-10-23 18:08:26

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

在ssh项目中,把一个word文件上传到数据库的blob中,如何读取出来

问题描述 在ssh项目中,把一个word文件上传到数据库的blob中,如何读取出来mysql中的blob只能存放图片吗?要是能存别的格式的文件的话,怎么打开啊? 问题补充:那怎么才能直接打开这个word文档呢 解决方案 问题补充:那怎么才能直接打开这个word文档呢 你读出来写成world文件啊···xx.doc ,应该这样可以吧·· BufferedOutputStream bos = new BufferedOutputStream( new FileOutputStream("/xx.do

求gxt 文件上传实例(在gxt中如何提交formpanel,服务端怎么设计),求高手!

问题描述 求gxt 文件上传实例(在gxt中如何提交formpanel,服务端怎么设计),求高手! 解决方案 FormPanel form = new FormPanel();form .setMethod(Method.POST);form .setEncoding(Encoding.MULTIPART);FileUploadField fileUpload = new FileUploadField();fileUpload.getMessages().setBrowseText(msg.b

文件上传漏洞在惠信中的应用_漏洞研究

近来大家为dvbbs的文件上传漏洞兴奋不已,想想在其他的系统里面能不能用的上呢?我就以惠信新闻系统来抛砖引玉吧!  惠信新闻系统3.1 windows2000+sp4  先看这句代码.admin_uploadfilesave.asp  ...............  Server.mappath(formPath&file.FileName)  ............................  保存时用路径+文件名+后缀名,那我们可以用dvbbs上的漏洞了,只不过我们改的是文件名(因

哈哈写了个新的二文件上传!才30行代码啊。很容易看懂……支持多文件。

上传 <%' upload.aspFunction IntMin(n,y)    If n<y and n>0 Then         IntMin=Int(n)    ElseIf y>0 Then         IntMin=Int(y)    Else         IntMin=n    End IfEnd Function Function getFormValue(Name)    Dim formSize,formData,DataHeader,DataStar

Silverlight之文件上传组件

摘要: 文件上传是日常开过程中最常用的功能之一,目前实现文件上传的方式多种多样.这其中较为复杂的情况就是关于大文件.多文件上传的问题,目前解决大文件.多文件上传一般借助于js或者flash组件,今天就同大家一起看一下如何使用silverlight实现这个功能,而且功能和用户体验相对会更好一些. 主要内容: 一.组件特点 二.实现原理 三.编码实现 一.组件特点 对于今天要说的组件姑且叫做"CmjUpload"吧,方便称呼.目前有很多上传组件来辅助完成日常开发,"CmjUplo

AJAX+JSF组件 实现高性能的文件上传

一. 引言 基于浏览器的文件上传,特别是对于通过<input type="file">标签包含到Web页面来实现上传的情况,还存在较严重的性能问题.我们知道,超过10MB的上传文件经常导致一种非常痛苦的用户体验.一旦用户提交了文件,在浏览器把文件上传到服务器的过程中,界面看上去似乎处于静止状态.由于这一切发生在后台,所以许多没有耐心的用户开始认为服务器"挂"了,因而再次提交文件,这当然使得情况变得更糟糕. 为了尽可能使得文件上传感觉更友好些,一旦用户提交

简单的php文件上传。一个文件搞定。

有staff需要临时上传文件作中转,于是就写了个uploads.php 这个来方便他上传下载.   把下面代码另存为uploads.php 然后放在www目录即可     <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="

php文件上传表单摘自drupal的代码

drupal文件上传表单的例子 复制代码 代码如下: function upload_form() { $form = array(); // If this #attribute is not present, upload will fail on submit $form['#attributes']['enctype'] = 'multipart/form-data'; $form['file_upload'] = array( '#title' => t('Upload file'),

asp.net文件上传示例

 ASP.NET依托.net framework类库,封装了大量的功能,使得上传文件非常简单,主要有以下三种基本方法,需要的朋友可以参考下 方法一:用Web控件FileUpload,上传到网站根目录.   Test.aspx关键代码:    代码如下: <form id="form1" runat="server"> <asp:FileUpload ID="FileUpload1" runat="server"

asp.net 文件上传实例汇总

 文件上传在asp.net中有很多方法,这里我很给各位介绍最简单最方便的.net文件上传实例,希望给各位.net入门者带来帮助 ASP.NET依托.net framework类库,封装了大量的功能,使得上传文件非常简单,主要有以下三种基本方法.   方法一:用Web控件FileUpload,上传到网站根目录.   Test.aspx关键代码:    代码如下:      <form id="form1" runat="server">      <