MVC5文件上传和显示

时间:2017-11-15 15:42:46

标签: asp.net-mvc-5

我目前遇到的问题是将图像上传到文件服务器的MVC应用程序。

 public ActionResult UploadFile(HttpPostedFileBase file, string newFileName)
    {

        try
        {
            if (file.ContentLength > 0)
            {
                Bitmap bm = new Bitmap(file.InputStream);
                Bitmap final = new Bitmap(bm, 150, 150);
                final.SetResolution(72.0F, 72.0F);

                string _FileName = newFileName + ".jpg";
                string _path = Path.Combine(ConfigurationManager.AppSettings["imageDirectory"], _FileName);
                final.Save(_path,System.Drawing.Imaging.ImageFormat.Jpeg);
            }
            ViewBag.Message = "File Uploaded Successfully!!";
            return RedirectToAction("Index");
        }
        catch
        {
            ViewBag.Message = "File upload failed!!";
            return RedirectToAction("Error");
        }
    }

因此用户选择一个文件并将其上传到Windows共享。此代码在我的计算机上使用IISExpress和我们的测试服务器。当部署到我们的生产服务器时,它似乎正在工作,它重定向到索引但文件服务器上的文件永远不会更改。

IISExpress,测试服务器和Production Server都指向同一个文件目录。

我在对此进行故障排除时遇到的另一个问题是,在使用应用程序的FQDN时,文件服务器中的图像不会显示。因此http://[appName].[domain].[com]无法显示图片,但http://[appName]会显示图片。只是另一个奇怪的问题,根本没有出现在测试中。

1 个答案:

答案 0 :(得分:1)

这是问题和解决方案;
如果它适用于您的开发系统,那么问题是您没有给app_data文件夹提供readwrite访问权限。 HttpPostedFileBase总是暂时将文件上传到App_Store,并从那里将Save()方法从中获取文件。如果您没有App_Data文件夹,请创建它。您必须对服务器上的IIS_USERS提供完整的ReadWrite访问权限