在asp.net mvc5应用程序中不在azure上创建的子文件夹

时间:2016-08-14 16:59:07

标签: asp.net-mvc-3 asp.net-mvc-4 azure azure-web-sites azure-storage-blobs

我在azure上浏览我的网站,每个文件夹都存在于azure的网站目录中,但uploadimages是我的子文件夹,内容在wwwroot中不存在,图片也没有上传 我在用 var path = Path.Combine(Server.MapPath("〜/ Content / UploadImages /")+ filename); 与文档上传相同

1 个答案:

答案 0 :(得分:0)

根据您的描述,我已在我身边进行了测试,请按照以下方式查看是否可以帮助您。 正如您所说,您通过以下代码获得了目标文件路径: var path = Path.Combine(Server.MapPath(“〜/ Content / UploadImages /”)+ filename); 在上传文件之前,请确保您的网络服务器“〜/ Content / UploadImages /”中的目录已存在。

这是我的测试代码:

MVC控制器方法

[HttpPost]
public JsonResult UploadFiles()
{
    try
    {
        foreach (string file in Request.Files)
        {
            var fileContent = Request.Files[file];
            if (fileContent != null && fileContent.ContentLength > 0)
            {
                var stream = fileContent.InputStream;
                var fileName = Path.GetFileName(fileContent.FileName);
                string baseDir = Server.MapPath("~/Content/UploadImages/");
                if (!Directory.Exists(baseDir))
                    Directory.CreateDirectory(baseDir);
                var path = Path.Combine(baseDir, fileName);
                using (var fileStream = System.IO.File.Create(path))
                {
                    stream.CopyTo(fileStream);
                }
            }
        }
    }
    catch (Exception e)
    {
        return Json(new
        {
            Flag = false,
            Message = string.Format("File Uploaded failed with exception:{0}", e.Message)
        });
    }
    return Json(new
    {
        Flag = true,
        Message = "File uploaded successfully!"
    });
}

此外,为了长期考虑,您可以将文件存储在Azure Blob存储上,这可以为您带来一些好处,例如:

1.将图像或文档直接提供给浏览器
2.分发访问的文件 3.当您扩展您的站点时,您的站点可以在多个Web服务器实例中运行,这些实例可以访问相同的文件和docs同时

有关详情,请参阅此链接:https://azure.microsoft.com/en-us/documentation/articles/storage-dotnet-how-to-use-blobs/