保存图像的最佳方法?
问题描述:
我有一个asp.net mvc应用程序,允许上传图片。我想知道做什么是最好的方法。保存图像的最佳方法?
现在我有这个
HttpPostedFileBase uploadedImg = Session[SessionImgKey] as HttpPostedFileBase;
if (uploadedImg != null)
{
string fileName = CreateFile(MyField.Name, uploadedImg);
tableA.ImagePath = String.Concat(ImgFolderPathLoctaion, "\\", fileName);
}
这是不错,但我想将它移到我的服务层,我不希望在导入web.dll有到我的业务层项目。
所以我应该使用流?或类似Image Save(我认为这可能更适合通过绘图类而不是图像上传的图像
答
您可以从发布的文件中获取图像流,将其转换为图像(System.Drawing)并保存:
var stream = uploadedImg.InputStream;
var buffer = new byte[stream.Length];
stream.Read(buffer, 0, buffer.Length);
//convert stream into image
Image myImage = Image.FromStream(new MemoryStream(buffer));
myImage.Save("c:\myimage.jpg");
答
如果您需要将文件传递到服务层,请使用HttpPostedFileBase的InputStream属性传递流。通过这种方式,您的服务层不知道您的网页/表示层。
+0
这是我会做的,但我不确定将它写入服务器的最佳方式是什么?使用流读取器和写入器? – chobo2 2012-01-07 23:46:06
为什么上传的文件存储在会话中? – alexn 2012-01-07 23:24:31
我有一个jQuery的形式向导由ajax发布(使用序列化)。由于用ajax发布文件是不可能的(不使用iframe或html5)。我不得不使用plupload,因此他们必须点击上传按钮才能将它存储在会话中,并且当他们提交整个表单时,我会将其从会话中删除。 – chobo2 2012-01-07 23:48:01