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">附件上 ...
随机推荐
- string类型版本号比较
直接上代码吧: boolean CompareVersion(string softVersion1, string softVersion2) { ) { return true; } return ...
- MYSQL TIMESTAMP with implicit DEFAULT value is deprecated.
TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp se ...
- Thrift 实现 JAVA,PHP,C#,Python 互相通信
Thrift介绍 https://www.ibm.com/developerworks/cn/java/j-lo-apachethrift/index.html 首先需要下载 Thrift.exe ...
- react-native 打包 出apk
先上步骤: 一. 生成签名文件(my-release-key.keystore文件) Android要求所有应用都有一个数字签名才会被允许安装在用户手机上 1. 在项目目录下运行如下命令: keyt ...
- 25- 解决'python -m pip install --upgrade pip' 报错问题
转载于:https://blog.csdn.net/cxs123678/article/details/80659273 再安装包的时候提示 You are using pip version 9.0 ...
- Java的类名与文件名必须一致
1.Java保存的文件名必须与类名一致:2.如果文件中只有一个类,文件名必须与类名一致:3.一个Java文件中只能有一个public类:4.如果文件中不止一个类,文件名必须与public类名一致:5. ...
- 协程库st(state threads library)原理解析
协程库state threads library(以下简称st)是一个基于setjmp/longjmp实现的C语言版用户线程库或协程库(user level thread). 这里有一个基本的协程例子 ...
- nvidia显卡驱动
http://blog.csdn.net/Monica__2012/article/details/75577522 $nvidia-smi
- arean.c
glibc-2.14中的arean.c源代码,供研究malloc和free实现使用: /* Malloc implementation for multiple threads without loc ...
- HDU1301&&POJ1251 Jungle Roads 2017-04-12 23:27 40人阅读 评论(0) 收藏
Jungle Roads Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 25993 Accepted: 12181 De ...