ajaz ahmed
ajaz ahmed

Reputation: 3

How to convert String to 'System.Web.HttpPostedFile'?

I have an image that's path is stored in a variable of type string. How can I store that path in 'System.Web.HttpPostedFile', the file upload?

Please some one tell me how to convert a string to 'System.Web.HttpPostedFile'.

Upvotes: 0

Views: 7565

Answers (2)

ACP
ACP

Reputation: 35268

Use this method:

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 method returns a string which will be the path.

Upvotes: 0

Brian Mains
Brian Mains

Reputation: 50728

HttpPostedFile has a sealed constructor; you could use reflection to create the HttpPostedFile class. The ctor takes: string fileName, string contentType, HttpInputStream stream

So you have to pass the path to the HttpPostedFile constructor via reflection if you like. Not sure what by default gets passed to HttpInputStream.

Upvotes: 1

Related Questions