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">附件上 ...
随机推荐
- nginx 配置ajax跨域访问php接口
在nginx.conf里面,找到server项,并在里面添加如下配置 location ~ \.php?($|/) { #try_files $uri =; #handel cosr by mao a ...
- JavaScript中call,apply,bind方法
why?call,apply,bind干什么的?为什么要学这个? 一般用来指定this的环境,在没有学之前,通常会有这些问题. var a = { user:"追梦子", fn:f ...
- 46. Permutations (Back-Track,Sort)
Given a collection of numbers, return all possible permutations. For example,[1,2,3] have the follow ...
- Oracle ADF VO排序及VO的查询模式
常规应用中,当需要使用Table向终端用户展示数据时,Table中数据的显示排序一致性极大程度的影响到了客户体验.通常希望诸如多次查询结果显示顺序相同.插入数据在原数据上方等的实现. ADF为开发人员 ...
- Castle ActiveRecord学习(七)使用日志
暂无 参考:http://terrylee.cnblogs.com/archive/2006/04/14/374829.html
- 主线程不能直接调用webservice方法
@Overrideprotected void onCreate(Bundle savedInstanceState){//StrictMode.setThreadPolicy(new StrictM ...
- 【转】Defunct进程 僵尸进程
在测试基于 DirectFB+Gstreamer 的视频联播系统的一个 Demo 的时候,其中大量使用 system 调用的语句,例如在 menu 代码中的 system("./play&q ...
- linux nkf 日文编码转换命令[转载]
对于日语的编码 windows : Shift-JIS Linux : 2.4内核使用EUC编码,2.6内核中使用UTF8编码 检查文件编码 nkf -g filename 通常处理字符编码都使用i ...
- [label][转载][paypal]paypal在线支付接口的WEB语言设置
http://stephen830.iteye.com/blog/274072 ★★★ 本篇为原创,需要引用转载的朋友请注明:< http://stephen830.iteye.com/blog ...
- MS EXCEL2013添加Oracle Web ADI菜单