如何将String转换为'System.Web.HttpPostedFile'?

时间:2009-12-19 09:52:05

标签: c# .net

我有一个图像,其路径存储在string类型的变量中。  如何将该路径存储在'System.Web.HttpPostedFile'中,文件上传?

请告诉我如何将字符串转换为'System.Web.HttpPostedFile'。

2 个答案:

答案 0 :(得分:1)

HttpPostedFile有一个密封的构造函数;您可以使用反射来创建HttpPostedFile类。 ctor采用:string fileName,string contentType,HttpInputStream stream

因此,如果您愿意,必须通过反射将路径传递给HttpPostedFile构造函数。不确定默认情况下传递给HttpInputStream。

答案 1 :(得分:0)

使用此方法:

using System.IO;
using System.Drawing;
using System.Drawing.Imaging;
using System.Text;
using System.Text.RegularExpressions;

public string SaveImageFile(FileUpload fu, string directoryPath, int MaxWidth, 
                            int MaxHeight, string prefixName)
{
    string serverPath = "", returnString = "";
    if (fu.HasFile)
    {
        Byte[] bytes = fu.FileBytes;
        //Int64 len = 0;
        prefixName = "Testing" + prefixName;
        //directoryPath = "Testing/";
        System.IO.MemoryStream ms = new System.IO.MemoryStream(bytes);
        System.Drawing.Image img = System.Drawing.Image.FromStream(ms);
        string dipath = System.Web.HttpContext.Current.Server.MapPath("~/") + directoryPath;
        DirectoryInfo di = new DirectoryInfo(dipath);
        if (!(di.Exists))
        {
            di.Create();
        }
        HttpPostedFile file = fu.PostedFile;
        DateTime oldTime = new DateTime(1970, 01, 01, 00, 00, 00);
        DateTime currentTime = DateTime.Now;
        TimeSpan structTimespan = currentTime - oldTime;
        prefixName += ((long)structTimespan.TotalMilliseconds).ToString();
        if (IsImage(file))
        {
            using (Bitmap bitmap = new Bitmap(file.InputStream, false))
            {
                serverPath = dipath + "//" + prefixName +     fu.FileName.Substring(fu.FileName.IndexOf("."));
                img.Save(serverPath);
                returnString = "~/" + directoryPath + "//" + prefixName + fu.FileName.Substring(fu.FileName.IndexOf("."));
            }
        }
    }
    return returnString;
}

private bool IsImage(HttpPostedFile file)
{
    if (file != null && Regex.IsMatch(file.ContentType, "image/\\S+") &&
      file.ContentLength > 0)
    {
        return true;
    }
    return false;
}

SaveImageFile方法返回一个将成为路径的字符串。