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#上传文件处理的更多相关文章

  1. IE8/9 JQuery.Ajax 上传文件无效

    IE8/9 JQuery.Ajax 上传文件有两个限制: 使用 JQuery.Ajax 无法上传文件(因为无法使用 FormData,FormData 是 HTML5 的一个特性,IE8/9 不支持) ...

  2. 三种上传文件不刷新页面的方法讨论:iframe/FormData/FileReader

    发请求有两种方式,一种是用ajax,另一种是用form提交,默认的form提交如果不做处理的话,会使页面重定向.以一个简单的demo做说明: html如下所示,请求的路径action为"up ...

  3. asp.net mvc 上传文件

    转至:http://www.cnblogs.com/fonour/p/ajaxFileUpload.html 0.下载 http://files.cnblogs.com/files/fonour/aj ...

  4. app端上传文件至服务器后台,web端上传文件存储到服务器

    1.android前端发送服务器请求 在spring-mvc.xml 将过滤屏蔽(如果不屏蔽 ,文件流为空) <!-- <bean id="multipartResolver&q ...

  5. .net FTP上传文件

    FTP上传文件代码实现: private void UploadFileByWebClient() { WebClient webClient = new WebClient(); webClient ...

  6. 通过cmd完成FTP上传文件操作

    一直使用 FileZilla 这个工具进行相关的 FTP 操作,而在某一次版本升级之后,发现不太好用了,连接老是掉,再后来完全连接不上去. 改用了一段时间的 Web 版的 FTP 工具,后来那个页面也 ...

  7. 前端之web上传文件的方式

    前端之web上传文件的方式 本节内容 web上传文件方式介绍 form上传文件 原生js实现ajax上传文件 jquery实现ajax上传文件 form+iframe构造请求上传文件 1. web上传 ...

  8. Django session cookie 上传文件、详解

    session 在这里先说session 配置URL from django.conf.urls import patterns, include, url from django.contrib i ...

  9. 4 django系列之HTML通过form标签来同时提交表单内容与上传文件

    preface 我们知道提交表单有2种方式,一种直接通过submit页面刷新方法来提交,另一种通过ajax异步局部刷新的方法提交,上回我们说了通过ajax来提交文件到后台,现在说说通过submit来提 ...

  10. 1. Django系列之Django与ajax上传文件

    html代码如下: <div class="form-group"> <label for="exampleInputFile">附件上 ...

随机推荐

  1. ehlib 用法记录

    点列头排序 1.add  ehlibado.pas  to project. 2.grideh>ColumnDefValues>Title>TitleButton=true; 3.g ...

  2. MySQL GTID (四)

    七. GTID的限制以及解决方案 7.1 事务中混合多个存储引擎,会产生多个GTID. 当使用GTID,在同一个事务中,更新包括了非事务引擎(MyISAM)和事务引擎(InnoDB)表的操作,就会导致 ...

  3. 关于setConnectTimeout和setReadTimeout的问题

    1.问题描述 这几天测试重构后的下载框架,发现在下载过程中如果网络中断或网络较差,个别应用的下载就会阻塞卡住,一直卡在 “正在下载 xx%”.   2.问题排查和定位 思考:网络差不应该报网络异常的错 ...

  4. Davinci-DM6467板子-外围器件的I2C地址的疑惑解答

    这篇文即调试标清视频或者说调试TVP5147和ADV7343所使用的程序名称为video_sd_playback_480i_composite 我们用的是合众达公司(SEED)的SEED-DVSD64 ...

  5. ansible 使用

    批量添加ssh免密 ansible mhc -m authorized_key -a "user=root key='{{ lookup('file','/root/.ssh/id_dsa. ...

  6. 25.Reverse Nodes in k-Group (List)

    Given a linked list, reverse the nodes of a linked list k at a time and return its modified list. If ...

  7. C++中public、protected以及private的使用

    相比C语言,C++中通过class/struct来定义既包含数据,又包含行为的结构,从而支持了“对象”.现实世界中,一个人(一个对象)通常 拥有一些资产(数据),并且掌握某些技能(行为),并且这些资产 ...

  8. c语言伪常量const理解

    const是伪常量,无法用于数组的初始化和全局变量的初始化,本质就是限定一个变量不能直接赋值. 如以下代码: #define A 10 int arr[A]; //const本质,伪常量 ,无法用于数 ...

  9. python virtualenv环境安装(ubuntu)

    测试系统ubantu16.04 该系统已经默认安装了python3.5, 当然了python2.7也同时存在着. 可以用如下命令安装pip(如下命令会默认安装pip到python2.7库中) $ su ...

  10. mongo学习- 副本集 大多数原则

    副本集中有一个重要的概念“大多数”,意思是说,选择主节点需要大多数决定(本人亲自做了实验) 步骤: 1.开启副本集(如果没有配置好 副本集的 亲参考我的上篇文章  https://www.cnblog ...