using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.IO;
namespace Ant.Service.Common
{
///
/// 文件上传
///
public class FileUpload
{
///
/// 单个文件上传(只获取第一个文件,返回的文件名是文件的md5值),返回为json数据格式,成功返回{status:"success",website:"a.jpg"},失败,返回{status:"error",website:"error"}
///
/// 上下文
/// 文件路径
/// 返回文件的md5
/// 返回json状态信息
public static string FileUploadSingle(HttpContext context, string FilePath, out string outFileName)
{
string json = "";
//找到目标文件对象
HttpFileCollection hfc = context.Request.Files;
HttpPostedFile hpf = hfc[0];
if (hpf.ContentLength > 0)
{
//根据文件的md5的hash值做文件名,防止文件的重复和图片的浪费
//string FileName = CreateFileForFileNameByMd5(hpf.FileName); //CreateDateTimeForFileName(hpf.FileName);//自动生成文件名
string FileName = hpf.FileName;
string file = System.IO.Path.Combine(FilePath,FileName);
if (!Directory.Exists(Path.GetDirectoryName(file)))
{
Directory.CreateDirectory(file);
}
hpf.SaveAs(file);
json = "{status:\"success\",website:\"" + FileName + "\"}";
outFileName = FileName;
}
else
{
json = "{status:\"error\",website:\"error\"}";
outFileName = FilePath;
}
return json;
}
///
/// 单个文件上传(只获取第一个文件,返回的文件名是文件的md5值),返回为json数据格式,成功返回{status:"success",website:"a.jpg"},失败,返回{status:"error",website:"error"}
///
/// 上下文
/// 文件路径
/// 返回文件的md5
/// 返回json状态信息
public static string FileUploadMulti(HttpContext context, string FilePath, out string[] outFileName)
{
string json = "";
//找到目标文件对象
HttpFileCollection hfc = context.Request.Files;
outFileName = new string[hfc.Count];
for (int i = 0; i < hfc.Count; i++)
{
if (hfc[i].ContentLength > 0)
{
//根据文件的md5的hash值做文件名,防止文件的重复和图片的浪费
string FileName = CreateFileForFileNameByMd5(hfc[i].FileName); //CreateDateTimeForFileName(hpf.FileName);//自动生成文件名
string file = System.IO.Path.Combine(FilePath,
FileName);
if (!Directory.Exists(Path.GetDirectoryName(file)))
{
Directory.CreateDirectory(file);
}
hfc[i].SaveAs(file);
outFileName[i] = FileName;
}
}
//如果文件非空,就返回json数据
if (outFileName.Count() > 0)
json = "{status:\"success\",website:\"" + string.Join(",", outFileName) + "\"}";
else
json = "{status:\"error\",website:\"error\"}";
return json;
}
///
/// 根据文件的md5值当作文件的文件名(
///
/// 文件名
/// 文件的md5值
public static string CreateFileForFileNameByMd5(string FileName)
{
return Common.MD5Provider.Hash(FileName+ DateTime.Now.ToString()) +Path.GetExtension(FileName);
}
///
/// 根据当前时间生成文件名
///
///
public static string CreateDateTimeForFileName(string FileName)
{
string datetime = DateTime.Now.ToString("yyyyMMddhhmmssffff");
string FilePath = datetime + Path.GetExtension(FileName);
return FilePath;
}
#region Mvc用上传文件
public static void FileUploadSingle(HttpPostedFileBase file, string savePath, out string newName)
{
newName = string.Empty;
if (file.ContentLength > 0)
{
//根据文件的md5的hash值做文件名,防止文件的重复和图片的浪费
string FileName = CreateFileForFileNameByMd5(file.FileName);
//CreateDateTimeForFileName(hpf.FileName);//自动生成文件名
//string FileName = Common.Enums.ClsDic.DicPhone["安卓程序"];
string _newPath = System.IO.Path.Combine(savePath, FileName);
if (!Directory.Exists(Path.GetDirectoryName(_newPath)))
{
Directory.CreateDirectory(_newPath);
}
file.SaveAs(_newPath);
newName = FileName;
}
else
{
newName = savePath;
}
}
public static void FileUploadSingle(HttpPostedFileBase file, string savePath, out string newName,int type)
{
newName = string.Empty;
if (file.ContentLength > 0)
{
//根据文件的md5的hash值做文件名,防止文件的重复和图片的浪费
//string FileName = CreateFileForFileNameByMd5(file.FileName); //CreateDateTimeForFileName(hpf.FileName);//自动生成文件名
string FileName ="";
if(type==1)
FileName = Common.Enums.ClsDic.DicPhone["安卓程序"];
else
FileName = Common.Enums.ClsDic.DicPhone["苹果程序"];
string _newPath = System.IO.Path.Combine(savePath, FileName);
if (!Directory.Exists(Path.GetDirectoryName(_newPath)))
{
Directory.CreateDirectory(_newPath);
}
file.SaveAs(_newPath);
newName = FileName;
}
else
{
newName = savePath;
}
}
#endregion
}
}