问题描述
我有一个要求,我想在其中创建调查表,并且用户可以选择上传文件。该网站是一个 ASP.NET MVC 应用程序。
这些用户只能访问调查表单,而无权访问应用程序中的任何其他页面。要上传到位于应用托管的同一服务器中的共享文件夹的文件。
文件夹的访问权限仅适用于特定的 AD 组。上传文件的外部用户不属于该 AD 组。
[HttpPost]
public JsonResult Upload()
{
string fileUniqueName = string.Empty;
try
{
for (int i = 0; i < Request.Files.Count; i++)
{
HttpPostedFileBase file = Request.Files[i];
string fileName = file.FileName;
fileUniqueName = string.Format("{0}_{1}_{2}",Path.GetFileNameWithoutExtension(file.FileName),DateTime.Now.ToString("yyyyMMdd_HHmmss_FFF"),Path.GetExtension(file.FileName));
string tempFileUploadFolderPath = ConfigurationManager.AppSettings["TempFolderPath"];
Directory.CreateDirectory(tempFileUploadFolderPath);
string fileFullpath = Path.Combine(tempFileUploadFolderPath,fileUniqueName);
file.SaveAs(fileFullpath);
}
}
catch(Exception)
{
Response.StatusCode = (int)HttpStatusCode.BadRequest;
return new JsonResult
{
Data = ""
};
}
return new JsonResult
{
Data = fileUniqueName
};
}
我在 web.config 中有以下设置
<authentication mode="Windows" />
<identity impersonate="true" />
有人可以指导如何在这种情况下执行文件上传功能吗?我们可以通过模拟做任何事情吗?
解决方法
是的,可以做到。
只需将应用程序池的身份设置为 AD 组中的用户之一,以便应用程序有权将调查存储在共享文件夹中。