我在IIS8.0上使用MVC4将多个图像文件发送到服务器。这已经工作了很长时间,但最近应用程序需要更改保存图像的位置。之前,我正在保存到网络位置,现在我直接保存到运行应用程序的同一个Web服务器。
现在当我上传时只保存一个文件。特别是列表中的最后一个文件。
为什么现在发生这种情况?此外,我可以在localhost上运行该应用程序,它将所有图像保存到Web服务器就好了。一旦我发布并尝试它,它就会开始只拍摄最终图像。
来自HTML:
<form id="inputForm" method="post" action="../images/Create" enctype="multipart/form-data">
<div id="uploadList">
<input type="file" name="files" id="file1" accept=".jpg,.png,.gif" />
<input type="file" name="files" id="file2" accept=".jpg,.png,.gif" />
<input type="file" name="files" id="file3" accept=".jpg,.png,.gif" />
<input type="file" name="files" id="file4" accept=".jpg,.png,.gif" />
<input type="file" name="files" id="file5" accept=".jpg,.png,.gif" />
<input type="file" name="files" id="file6" accept=".jpg,.png,.gif" />
</div>
以下是web.config中的一些行。
<system.web>
<httpRuntime targetFramework="4.5" maxRequestLength="1048576" executionTimeout="3600" />
</system.web>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="1073741824" />
</requestFiltering>
</security>
来自Controller。
[HttpPost]
public ActionResult Create(IEnumerable<HttpPostedFileBase> files, string serial)
//... Other stuff
foreach (var file in files)
{
if (file != null)
{
if (file.ContentType == "image/jpeg" || file.ContentType == "image/png" || file.ContentType == "image/gif")
{
var fileName = Path.GetExtension(file.FileName);
string result = fileName.AppendTimeStamp();
var path = Path.Combine((Server.MapPath("~/adpear\\") + storageLoc + "\\" + theUserCompany + "\\" + serial), (serial + "_" + result));
file.SaveAs(path);
theSavedImageCount++;
}
}
}
答案 0 :(得分:1)
检查服务器上的path
变量,我认为所有文件都是一样的。如果你有相同的路径变量,那么所有文件将相互覆盖,最后你最后得到最后一个文件。
我还建议您尝试以下逻辑 -
var fileName = Path.GetExtension(file.FileName);
string currentDate = DateTime.Now.ToString("yyyyMMddHHmmssfff");
// You can change this string.format as per your requirement
// Probably you can use Guid here with proper format.
string result = String.Format("{0}_{1}",currentDate, fileName);
var path = Path.Combine((Server.MapPath("~/adpear\\") + storageLoc + "\\" + theUserCompany + "\\" + serial), (serial + "_" + result));
file.SaveAs(path);
theSavedImageCount++;