【问题标题】:Image to HttpPostedFileBase - or a way to store an Image file in server filesystem图像到 HttpPostedFileBase - 或一种将图像文件存储在服务器文件系统中的方法
【发布时间】:2011-09-18 04:45:47
【问题描述】:

我有一个 WCF RESTful 服务,其目的是接收代表图像的 base64 编码字符串并将其存储在服务器文件系统中,其方式类似于 HttpPostedFile 使用以下代码(文件是HttpPostedFileBase 变量):

file.SaveAs(Server.MapPath("..\\Content\\UploadedImages\\") + id + file.FileName.Replace(" ",""));

到目前为止,我可以毫无问题地从 base64 字符串创建一个 System.Drawing.Image 对象。但是,我似乎无法创建一个可以获取此图像并调用代码括号中的方法的 HttpPostedFileBase 变量?

有什么办法可以做到吗?根据this page,我不能,所以真正的问题是:

如何在我的服务器的文件系统中保存 System.Drawing.Image 文件,以便在数据库中保留对该文件的引用?有没有可能?

提前感谢您的宝贵时间! :D

【问题讨论】:

  • 您是否收到任何错误消息?
  • 不,但 Darin 下面的答案对我来说很好。感谢您的关注jgauffin! :)
  • 绝对不要在 ASP .NET 的文件路径中使用“..”...它可能会导致您被攻击为 Velociraptor 和/或暴露您的代码中的严重安全漏洞。作为一般规则,您应该始终使用“~/Path”(~ 表示应用程序的根)语法。
  • 哦,废话,我不想被迅猛龙攻击!!好吧,感谢杰里米的警告! :)

标签: c# .net asp.net-mvc


【解决方案1】:

假设您有一个 Image 实例,您可以像这样将它保存在服务器上的 UploadedImages 文件夹中:

using (Image image = ...)
{
    var imagesFolder = Server.MapPath("~/Content/UploadedImages");
    var filename = Path.Combine(imagesFolder, id, file.FileName.Replace(" ",""));
    image.Save(filename);
}

【讨论】:

  • 好的,我试试看。感谢达林的回答! :D
  • 虽然 Server.MapPath 对我不起作用,但我找到了一种解决方法(我手头有服务器路径),其余代码工作正常。谢谢达林!! :D
猜你喜欢
  • 2017-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-14
  • 1970-01-01
相关资源
最近更新 更多