我有一个图像,其路径存储在string类型的变量中。 如何将该路径存储在'System.Web.HttpPostedFile'中,文件上传?
请告诉我如何将字符串转换为'System.Web.HttpPostedFile'。
答案 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方法返回一个将成为路径的字符串。