C#上传文件处理
public class FileHelp : System.Web.UI.Page
{ /// <summary>
/// 保存文件
/// 返回:数组:status[0]:文件名称;status[1]:文件后缀名;status[2]:文件绝对URL;status[3]:文件相对URL;
/// </summary>
/// <param name="floder"></param>
/// <param name="file"></param>
/// <returns>数组:status[0]:文件名称;status[1]:文件后缀名;status[2]:文件URL</returns>
public static string[] SaveFile(FileBase.FileFloder floder, HttpPostedFile file)
{
try
{
string[] status = { "", "", "", "" }; String Tpath = "/" + floder + "/" + DateTime.Now.ToString("yyyy-MM-dd") + "/";
string docName = file.FileName;
string dufix = Path.GetExtension(docName);
string FileName = DateTime.Now.ToString("yyyyMMddHHmmssfff") + "-" + System.Guid.NewGuid().ToString();
status[] = FileName + dufix;
status[] = dufix;
string FilePath = FileBase.fileBasePath + Tpath;
DirectoryInfo di = new DirectoryInfo(FilePath);
if (!di.Exists) { di.Create(); } file.SaveAs(FilePath + FileName + dufix); status[] = (FilePath + FileName + dufix).Replace("\\", "/");
status[] = (Tpath + FileName + dufix).Replace("\\", "/"); return status;
}
catch (Exception ex)
{
throw ex;
}
} /// <summary>
/// 保存文件
/// 返回:数组:files[0]:文件夹位置;files[1]:文件名;files[2]:文件所在位置;
/// </summary>
/// <param name="floder"></param>
/// <param name="tempId"></param>
/// <param name="file"></param>
/// <returns>数组:files[0]:文件夹位置;files[1]:文件名;files[2]:文件所在位置</returns>
public static string[] SaveFile(string filepath, HttpPostedFile file)
{
try
{
string[] files = { "", "", "" }; String Tpath = "/" + filepath + "/";
string docName = file.FileName;
string dufix = Path.GetExtension(docName);
string FileName = docName;
string FilePath = FileBase.fileBasePath + Tpath;
files[] = FilePath;
DirectoryInfo di = new DirectoryInfo(FilePath);
if (!di.Exists) { di.Create(); } file.SaveAs(FilePath + FileName);
files[] = FileName;
files[] = FilePath + FileName; return files;
}
catch (Exception ex)
{
throw ex;
}
} public static void CreateDir(string driPath)
{
DirectoryInfo di = new DirectoryInfo(FileBase.fileBasePath + "/" + driPath);
if (!di.Exists) { di.Create(); }
} /// <summary>
/// 清空文件夹的文件
/// </summary>
/// <param name="floder"></param>
/// <param name="tempId"></param>
public static void ClearFolderFiles(string path)
{
try
{
string[] files = { "", "", "" };
String Tpath = "/" + path + "/";
string FilePath = FileBase.fileBasePath + Tpath;
DirectoryInfo di = new DirectoryInfo(FilePath);
if (di.Exists)
{
FileSystemInfo[] fileinfo = di.GetFileSystemInfos(); //返回目录中所有文件和子目录
foreach (FileSystemInfo i in fileinfo)
{
if (i is DirectoryInfo) //判断是否文件夹
{
DirectoryInfo subdir = new DirectoryInfo(i.FullName);
subdir.Delete(true); //删除子目录和文件
}
else
{
File.Delete(i.FullName); //删除指定文件
}
}
} }
catch (Exception ex)
{
throw ex;
}
} public static void RemoveFile(string dirPath,string fileName)
{
try
{
//删除文件
for (int i = ; i < Directory.GetFiles(dirPath).ToList().Count; i++)
{
if (Path.GetFileName(Directory.GetFiles(dirPath)[i]) == fileName)
{
File.Delete(fileName);
}
}
}
catch (Exception ex)
{
throw ex;
}
} public static void RemoveDir(string dirPath, string fileName)
{
try
{
//删除文件夹
for (int i = ; i < Directory.GetDirectories(dirPath).ToList().Count; i++)
{
if (Directory.GetDirectories(dirPath)[i] == fileName)
{
Directory.Delete(fileName, true);
}
}
}
catch (Exception ex)
{
throw ex;
}
} /// <summary>
/// 实体集合转datatable
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="collection"></param>
/// <returns></returns>
public static DataTable ToDataTable<T>(IEnumerable<T> collection)
{
var props = typeof(T).GetProperties();
var dt = new DataTable();
dt.Columns.AddRange(props.Select(p => new DataColumn(p.Name, p.PropertyType)).ToArray());
if (collection.Count() > )
{
for (int i = ; i < collection.Count(); i++)
{
ArrayList tempList = new ArrayList();
foreach (PropertyInfo pi in props)
{
object obj = pi.GetValue(collection.ElementAt(i), null);
tempList.Add(obj);
}
object[] array = tempList.ToArray();
dt.LoadDataRow(array, true);
}
}
return dt;
} public static FileName SaveFiles(FileBase.FileFloder floder, HttpPostedFile file)
{
try
{
FileName fileName = new SN_DEV_Help.FileName();
//string status = "";
String Tpath = "/" + floder + "/" + DateTime.Now.ToString("yyyy-MM-dd") + "/";
string docName = file.FileName;
string dufix = Path.GetExtension(docName);
string FileName = DateTime.Now.ToString("yyyyMMddHHmmssfff") + "-" + System.Guid.NewGuid().ToString();
string FilePath = FileBase.fileBasePath + Tpath;
DirectoryInfo di = new DirectoryInfo(FilePath);
if (!di.Exists) { di.Create(); } file.SaveAs(FilePath + FileName + dufix);
fileName.url = (FilePath + FileName + dufix).Replace("\\", "/");
fileName.name = FileName;
return fileName;
}
catch (Exception ex)
{
throw ex;
}
} public static FileDetails UploadFile()
{
FileDetails fileDetails = new FileDetails();
HttpFileCollection filelist = HttpContext.Current.Request.Files;
if (filelist != null && filelist.Count > )
{
for (int i = ; i < filelist.Count; i++)
{
HttpPostedFile file = filelist[i];
try
{
var fileName = FileHelp.SaveFiles(FileBase.FileFloder.Institution, file);
fileDetails.Url = fileName.url;
fileDetails.name = fileName.name;
fileDetails.oldname = System.IO.Path.GetFileNameWithoutExtension(file.FileName);
fileDetails.Format = System.IO.Path.GetExtension(file.FileName);
fileDetails.Msg = ;
}
catch (Exception ex)
{
fileDetails.Msg = ;
}
}
}
else
{
fileDetails.Msg = ;
fileDetails.Result = "上传的文件信息不存在!";
}
return fileDetails;
} public static List<FileDetails> UploadFileT()//上传多个文件
{
List<FileDetails> list = new List<SN_DEV_Help.FileDetails>(); HttpFileCollection filelist = HttpContext.Current.Request.Files;
if (filelist != null && filelist.Count > )
{
for (int i = ; i < filelist.Count; i++)
{
FileDetails fileDetails = new FileDetails();
HttpPostedFile file = filelist[i];
try
{
var fileName = FileHelp.SaveFiles(FileBase.FileFloder.Institution, file);
fileDetails.Url = fileName.url;
fileDetails.name = fileName.name;
fileDetails.oldname = file.FileName;
fileDetails.Msg = ;
}
catch (Exception ex)
{
fileDetails.Msg = ;
}
list.Add(fileDetails);
}
}
else
{
//fileDetails.Msg = 0;
//fileDetails.Result = "上传的文件信息不存在!";
}
return list;
} }
public class FileDetails //details
{
/// <summary>
/// 保存链接
/// </summary>
public string Url { get; set; } public int Msg { get; set; } public string Format { get; set; } public string Result { get; set; } public string name { get; set; }
public string oldname { get; set; }
} public class FileName
{
public string url { get; set; }
public string name { get; set; }
}
保存文件
FileDetails fileDetails = FileHelp.UploadFile();
if (fileDetails.Msg == )
{
//保存文件资源
documentresources file = new documentresources
{
DocName = fileDetails.oldname,
FileName = fileDetails.name,
DocSuffix = fileDetails.Format,
DocUrl = fileDetails.Url,
UpDate = DateTime.Now.ToString()
};
dbContext.documentresources.Add(file);
dbContext.SaveChanges(); }
else
{
dbContextTranscation.Rollback();
faild.status = Result.失败;
faild.msg = "上传文件出错";
return JsonHelper.SerializeObject(faild);
}
C#上传文件处理的更多相关文章
- IE8/9 JQuery.Ajax 上传文件无效
IE8/9 JQuery.Ajax 上传文件有两个限制: 使用 JQuery.Ajax 无法上传文件(因为无法使用 FormData,FormData 是 HTML5 的一个特性,IE8/9 不支持) ...
- 三种上传文件不刷新页面的方法讨论:iframe/FormData/FileReader
发请求有两种方式,一种是用ajax,另一种是用form提交,默认的form提交如果不做处理的话,会使页面重定向.以一个简单的demo做说明: html如下所示,请求的路径action为"up ...
- asp.net mvc 上传文件
转至:http://www.cnblogs.com/fonour/p/ajaxFileUpload.html 0.下载 http://files.cnblogs.com/files/fonour/aj ...
- app端上传文件至服务器后台,web端上传文件存储到服务器
1.android前端发送服务器请求 在spring-mvc.xml 将过滤屏蔽(如果不屏蔽 ,文件流为空) <!-- <bean id="multipartResolver&q ...
- .net FTP上传文件
FTP上传文件代码实现: private void UploadFileByWebClient() { WebClient webClient = new WebClient(); webClient ...
- 通过cmd完成FTP上传文件操作
一直使用 FileZilla 这个工具进行相关的 FTP 操作,而在某一次版本升级之后,发现不太好用了,连接老是掉,再后来完全连接不上去. 改用了一段时间的 Web 版的 FTP 工具,后来那个页面也 ...
- 前端之web上传文件的方式
前端之web上传文件的方式 本节内容 web上传文件方式介绍 form上传文件 原生js实现ajax上传文件 jquery实现ajax上传文件 form+iframe构造请求上传文件 1. web上传 ...
- Django session cookie 上传文件、详解
session 在这里先说session 配置URL from django.conf.urls import patterns, include, url from django.contrib i ...
- 4 django系列之HTML通过form标签来同时提交表单内容与上传文件
preface 我们知道提交表单有2种方式,一种直接通过submit页面刷新方法来提交,另一种通过ajax异步局部刷新的方法提交,上回我们说了通过ajax来提交文件到后台,现在说说通过submit来提 ...
- 1. Django系列之Django与ajax上传文件
html代码如下: <div class="form-group"> <label for="exampleInputFile">附件上 ...
随机推荐
- FireMoneky 画图 Point 赋值
VCL 的 Canvas.Pen 对应FMX: Canvas.Stroke;VCL到 Canvas.Brush 对应FMX: Canvas.Fill. TCircle 圆形控件 Inkscape 0. ...
- nested exception is java.lang.IllegalStateException: No persistence units parsed from {classpath*:META-INF/persistence.xml}
Deploying inside Eclipse v3.6 raises the exception. The WEB-INF/classes/ folder in the .war doesn't ...
- Openstack 组件简介
1. Nova 计算服务: 负责承载和管理云计算系统 其中nova-compute service 通过调用Hypervisor APIs创建和终止虚拟机实例. 虚拟化技术: KVM和Xen 2. N ...
- javascript中的属性类型
ECMA-262第5版在定义只有内部才用的特性(attribute)时,描述了属性(property)的各种特性.ECMA-262定义这些特性是为了实现javascript引擎用的,因此在javasc ...
- http post Content-type: application/json; charset=utf-8
The header just denotes what the content is encoded in. It is not necessarily possible to deduce t ...
- 去掉redhat linux提示注册
去掉提示注册的话,卸载几个软件包:#rpm -qa | grep subscription-manager 然后移除那出现的几项吧:#yum remove subscription-manager-g ...
- Win10 Cygwin Cd Permission denied
问题描述 在win10或者win系统上面,使用cygwin的时候, 有时候会出现, 权限问题. 即使是管理员也不行. 问题分析 这个问题,我个人觉得,主要是使用不当造成的. 也就是说, 可能使用chm ...
- centos7之saltstack使用手册
武sir的图镇楼: salt是一个异构平台基础设置管理工具(虽然我们通常只用在Linux上),使用轻量级的通讯器ZMQ,用Python写成的批量管理工具,完全开源,遵守Apache2协议,与Puppe ...
- entity_class实体类
对应数据库中表,并继承基础模型类~
- 阅读xtrabackup代码的一点笔记
xtrabackup binary最重要的两个过程是backup和prepare,对应的函数分别是xtrabackup_backup_func()和xtrabackup_prepare_func(), ...