目标
我在同一个解决方案中有2个项目,目标是从域项目的Web项目中获取图像。
问题
我试图从我的网站“内容/图像”文件夹中读取,但我不知道如何设置网址以及是否可以这样做。
可行的丑陋和肮脏的代码是:但我不想将图像修复到文件夹>
Image logo = Image.FromFile(@"c:\folder\img.png");
答案 0 :(得分:2)
我花了一些时间搜索服务器变量,享受! :)
public async Task<IHttpActionResult> GetRenderImage(long id, int size = 0)
{
// Load template
var file = HttpContext.Current.Server.MapPath("~/Content/media/template.png");
WebImage img = new WebImage(file);
// some operations with image, for sample scale or crop
...
// get image data
var bytes = img.GetBytes("image/jpeg");
// Save to blob
var p = getCloudBlobContainer("RenderImg");
CloudBlockBlob blob = p.GetBlockBlobReference(String.Format("{0}.jpg", id);
blob.Properties.ContentType = "image/jpeg";
await blob.UploadFromByteArrayAsync(bytes, 0, bytes.Length);
var url = blob.Uri.ToString();
// Redirect to Azure blob image
return Redirect(url);
}
答案 1 :(得分:1)
您意识到在IIS中部署应用程序时,不再存在其他项目的概念。因此,您应该将此图像作为ASP.NET应用程序的一部分包含在内。例如,您可以创建一个构建后编译步骤,将图像从Project.domain
复制到ASP.NET MVC应用程序(例如在App_Data
文件夹中),这样您在MVC应用程序中就可以了能够使用Server.MapPath方法访问图像:
using (var image = Image.FromFile(Server.MapPath("~/App_Data/img.png")))
{
...
}