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">附件上 ...
随机推荐
- 决策树与树集成模型(bootstrap, 决策树(信息熵,信息增益, 信息增益率, 基尼系数),回归树, Bagging, 随机森林, Boosting, Adaboost, GBDT, XGboost)
1.bootstrap 在原始数据的范围内作有放回的再抽样M个, 样本容量仍为n,原始数据中每个观察单位每次被抽到的概率相等, 为1/n , 所得样本称为Bootstrap样本.于是可得到参数θ的 ...
- spring学习---day01
1,Spring Boot项目在启动的时,修改默认图标: 在src/main/resources目录下新建banner.txt文件,然后将自己的图案黏贴进去即可.ASCII图案可通过网站http:// ...
- Unknown type name 'NSString'
今天看到个问题,编辑工程提示Unknown type name 'NSString',如下图 导致出现异常的原因是是因为工程中添加了ZipArchive(第三方开源解压缩库) 一般情况下出现“Unkn ...
- 使用IntelliJ IDEA,gradle开发Java web应用步骤
最近 正在学习gradle构建工具的使用,看了一堆的文档,有点一知半解,索性动作实践一把,在以后的自己的项目中尝试使用看看.目前手头用的是IntelliJ IDEA 14,搭建了一天终于明白怎么集成g ...
- error:while loading shared libraries: libevent-2.1.so.6: cannot open shared object file: No such file or directory
执行 memcached 启动命令时,报错,提示:error while loading shared libraries: libevent-2.1.so.6: cannot open shared ...
- 查找yum 安装目录
[root@DB-Server ~]# rpm -qa | grep -i mysql MySQL-server-advanced-5.6.20-1.rhel5 MySQL-client-advanc ...
- 我们为什么要在 PHPStorm 中标记目录
问题来源 (1)要开发的项目位于PHPStorm打开的项目的二级目录下,使用PHPStorm来开发Laravel项目 提供的教程在代码自动定位和智能提醒方面,存在无效的情况: (2)使用gulp作为项 ...
- [Selenium] 最大化或自定义浏览器的大小
driver.manage().window().maximize(); //将浏览器设置为最大化的状态 driver.manage().window().setSize(new Dimens ...
- Web01 基础
网址组成(四部分) 协议 http,https (https是加密的http) 主机 g.cn zhihu.com之类的网址 端口 HTTP协议默认80,因此一般不用填写 路径 下面的 / 和 / ...
- 持续集成与devops
持续集成 持续集成 持续集成(Continuous integration,简称CI),简单的说持续集成就是频紧地(一天多次)将代码集成到主干,它的好处主要有两个: 1.快速发现错误.每完成一次更新, ...