ASP.NET 一般处理程序 接收文件上传

public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            StringBuilder sb = new StringBuilder();
            string resultcode = null;
            string errormsg = null;
            string paths = "";
            string names = "";
            string title = "";
            string FILEGUID = "";
            if (context.Request.Files.Count == 0)
            {
                resultcode = "1003";
                errormsg = "上传文件为空!";
                sb.Append("{\"resultcode\":" + "\"" + resultcode + "\"");
                sb.Append(",");
                sb.Append("\"errormsg\":" + "\"" + errormsg + "\"");
                sb.Append(",");
                sb.Append("\"datas\":" + "{");
                sb.Append("\"FilePath\":" + "\"" + paths + "\"");
                sb.Append(",");
                sb.Append("\"FileName\":" + "\"" + names + "\"");
                sb.Append(",");
                sb.Append("\"FileTitle\":" + "\"" + title + "\"");
                sb.Append(",");
                sb.Append("\"FileGuid\":" + "\"" + FILEGUID + "\"");
                sb.Append("}");
                sb.Append("}");
            }
            else
            {
                string guid = System.Guid.NewGuid().ToString("N");

                string dir = context.Server.MapPath("~/TaskMobile/files/") + guid;
                if (!System.IO.Directory.Exists(dir))
                {
                    System.IO.Directory.CreateDirectory(dir);
                }

                for (int i = 0; i < context.Request.Files.Count; i++)
                {
                    //获取上传的文件的对象
                    HttpPostedFile img = context.Request.Files[i];

                    //获取上传文件的名称
                    string s = img.FileName;
                    var strFileExtension = s.Substring(s.LastIndexOf(‘.‘) + 1, s.Length - s.LastIndexOf(‘.‘) - 1).ToUpper();
                    String allowextension = System.Configuration.ConfigurationManager.AppSettings["AllowUploadFileType"];
                    if (allowextension.IndexOf(strFileExtension) >= 0)
                    {
                        int len = s.LastIndexOf(".") - s.LastIndexOf("\\") - 1;
                        string fileName = s.Substring(s.LastIndexOf("\\") + 1, len);
                        string fullName = s.Substring(s.LastIndexOf("\\") + 1);

                        fileName = fileName.Replace(",", "");
                        fullName = fullName.Replace(",", "");
                        fullName = fullName.Replace(":", "");
                        //截取获得上传文件的名称(ie上传会把绝对路径也连带上,这里只得到文件的名称)
                        //string str = System.Guid.NewGuid().ToString("N")+ s.Substring(s.LastIndexOf(".") - 1); // s.Substring(s.LastIndexOf("\\") + 1);
                        string path = dir + "\\" + fullName;
                        //保存文件
                        img.SaveAs(path);
                        paths = HttpRuntime.AppDomainAppVirtualPath + "/TaskMobile/files/" + guid + "/" + fullName;
                        title = "/TaskMobile/files/" + guid + "/" + fullName;
                        names = fullName;

                        //附件大写(单位KB)
                        int size = img.ContentLength / 1024;
                        //保存附件到文件表
                        FILEGUID = new NDFILES().AddFiles(names, "", strFileExtension, NDFILES.getFileType(strFileExtension), size.ToString(), paths, context.User.Identity.Name);

                        resultcode = "1000";
                        sb.Append("{\"resultcode\":" + "\"" + resultcode + "\"");
                        sb.Append(",");
                        sb.Append("\"errormsg\":" + "\"" + errormsg + "\"");
                        sb.Append(",");
                        sb.Append("\"datas\":" + "{");
                        sb.Append("\"FilePath\":" + "\"" + paths + "\"");
                        sb.Append(",");
                        sb.Append("\"FileName\":" + "\"" + names + "\"");
                        sb.Append(",");
                        sb.Append("\"FileTitle\":" + "\"" + title + "\"");
                        sb.Append(",");
                        sb.Append("\"FileGuid\":" + "\"" + FILEGUID + "\"");
                        sb.Append("}");
                        sb.Append("}");
                    }
                    else
                    {
                        resultcode = "1003";
                        errormsg = "不支持的文件类型:" + strFileExtension;
                        sb.Append("{\"resultcode\":" + "\"" + resultcode + "\"");
                        sb.Append(",");
                        sb.Append("\"errormsg\":" + "\"" + errormsg + "\"");
                        sb.Append(",");
                        sb.Append("\"datas\":" + "{");
                        sb.Append("\"FilePath\":" + "\"" + paths + "\"");
                        sb.Append(",");
                        sb.Append("\"FileName\":" + "\"" + names + "\"");
                        sb.Append(",");
                        sb.Append("\"FileTitle\":" + "\"" + title + "\"");
                        sb.Append(",");
                        sb.Append("\"FileGuid\":" + "\"" + FILEGUID + "\"");
                        sb.Append("}");
                        sb.Append("}");
                    }
                    context.Response.Write(sb.ToString());
                }
            }
        }

  

原文地址:https://www.cnblogs.com/qiang277629628/p/9254443.html

时间: 2024-11-09 00:40:03

ASP.NET 一般处理程序 接收文件上传的相关文章

Android与Asp.Net Web服务器的文件上传下载BUG汇总【更新】

遇到的问题: 1.java.io.IOException: open failed: EINVAL (Invalid argument)异常,在模拟器中的sd卡创建文件夹和文件时报错 出错原因可能是:(1)文件名称中含有不符合规范的字符,比如“:”,“?”或者空格等.(2)需要先创建文件夹目录再创建文件,不能直接创建文件. 2. android.os.NetworkOnMainThreadException异常,从服务器请求数据后,写入文件时报错 出错原因:在主线程内执行了访问http的操作,最

用Fine Uploader+ASP.NET MVC实现ajax文件上传[代码示例]

Fine Uploader(http://fineuploader.com/)是一个实现 ajax 上传文件的 Javascript 组件. This project attempts to achieve a user-friendly file-uploading experience over the web. It's built as a Javascript plugin for developers looking to incorporate file-uploading int

ASP.NET 中对大文件上传的简单处理

ASP.NET 中对大文件上传的简单处理 在 ASP.NET 开发的过程中,文件上传往往使用自带的 FileUpload 控件,可是用过的人都知道,这个控件的局限性十分大,最大的问题就在于上传大文件时让开发者尤为的头疼,而且,上传时无法方便的做到多线程的操控和上传进度的显示.笔者在此给大家推荐一款简单易用的上传组件,从而快速便捷得解决了 ASP.NET 中的大文件上传问题. 首先,我们需要下载这个名为 RanUpLoad 的组件,可以去我的百度云盘下载: http://pan.baidu.com

HTML C# ajax结合ashx处理程序实现文件上传

ajax结合ashx处理程序实现文件上传 一.ajaxFileUpload是一个异步上传文件的jQuery插件. ajaxFileUpload参数说明:(copy了别人的参数说明) 1.url  上传处理程序地址. 2,fileElementId  需要上传的文件域的ID,即<input type="file">的ID.3,secureuri 是否启用安全提交,默认为false. 4,dataType 服务器返回的数据类型.可以为xml,script,json,html.如

[Asp.net]通过uploadify将文件上传到B服务器的共享文件夹中

写在前面 客户有这样的一个需求,针对项目中文档共享的模块,客户提出如果用户上传特别的大,或者时间久了硬盘空间就会吃满,能不能将这些文件上传到其他的服务器?然后就稍微研究了下这方面的东西,上传到网络中的某个共享的文件夹下确实能做到的. 解决方案 环境描述: 若A为web服务器,B为要存放文档的文件服务器. 如果通过A中的某个页面将文件上传到服务器B,则需要如下三个步骤. 1.在服务器B上面建立共享文件夹,步骤如下: 编辑贡献文件夹的权限,添加一个用户,并给它开放读写的权限. 2.共享文件夹建立之后

ASP.NET MVC下使用文件上传

这里我通过使用uploadify组件来实现异步无刷新多文件上传功能. 1.首先下载组件包uploadify,我这里使用的版本是3.1 2.下载后解压,将组件包拷贝到MVC项目中 3.  根目录下添加新文件夹Uploads,然后新建控制器UploadifyController.cs using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Web; using S

asp.net.mvc 的单文件上传和多文件上传的简单例子

首先打开vs2012,创建空的mvc4项目,名称为MVCStudy,选择基本模板 1)创建项目后,基本结构是这样的 2)建立对应的HomeController,视图index.fileupload.success.error页面 3)控制器源码 using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Web;using System.Web.Mvc;using Sys

[Fine Uploader] 用Fine Uploader+ASP.NET MVC实现ajax文件上传[代码示例]

Fine Uploader(http://fineuploader.com/)是一个实现 ajax 上传文件的 Javascript 组件 This project attempts to achieve a user-friendly file-uploading experience over the web. It's built as a Javascript plugin for developers looking to incorporate file-uploading into

简单原始的ASP.NET WEBFORM中多文件上传【参考其他资料修改】

首先是ASPX页面中添加file标签 <input onclick="addFile()" type="button" value="增加" /><br /><input id="viewfile" type="file" name="File" runat="server" style="width: 300px"