123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Web;
- using System.IO;
- namespace Ant.Service.Common
- {
- /// <summary>
- /// 文件上传
- /// </summary>
- public class FileUpload
- {
- /// <summary>
- /// 单个文件上传(只获取第一个文件,返回的文件名是文件的md5值),返回为json数据格式,成功返回{status:"success",website:"a.jpg"},失败,返回{status:"error",website:"error"}
- /// </summary>
- /// <param name="context">上下文</param>
- /// <param name="FilePath">文件路径</param>
- /// <param name="outFileName">返回文件的md5</param>
- /// <returns>返回json状态信息</returns>
- 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;
- }
- /// <summary>
- /// 单个文件上传(只获取第一个文件,返回的文件名是文件的md5值),返回为json数据格式,成功返回{status:"success",website:"a.jpg"},失败,返回{status:"error",website:"error"}
- /// </summary>
- /// <param name="context">上下文</param>
- /// <param name="FilePath">文件路径</param>
- /// <param name="outFileName">返回文件的md5</param>
- /// <returns>返回json状态信息</returns>
- 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;
- }
- /// <summary>
- /// 根据文件的md5值当作文件的文件名(
- /// </summary>
- /// <param name="FileName">文件名</param>
- /// <returns>文件的md5值</returns>
- public static string CreateFileForFileNameByMd5(string FileName)
- {
- return Common.MD5Provider.Hash(FileName+ DateTime.Now.ToString()) +Path.GetExtension(FileName);
- }
- /// <summary>
- /// 根据当前时间生成文件名
- /// </summary>
- /// <returns></returns>
- 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
- }
- }
|