我正在使用Uploadify在我的ASP.NET MVC应用程序中上传多个文件。在控制器操作中,我需要检查其中一个上传的文件是否是zip文件,如果是,我需要检查其内容。对于zip功能,我使用的是ICSharpCode.SharpZipLib。
从说我的桌面上传zip文件时,我收到以下错误: 无法在以下代码行中找到文件'C:\ Program Files(x86)\ Common Files \ Microsoft Shared \ DevServer \ 10.0 \ xyz.zip': FileStream fs = System.IO.File.OpenRead(Path.GetFullPath(fileData.FileName)); ZipFile zf = new ZipFile(fs);
如何解决此错误?
[HttpPost]
public ActionResult Upload(HttpPostedFileBase fileData)
{
if (fileData != null && fileData.ContentLength > 0)
{
if (Path.GetExtension(fileData.FileName) == ".zip")
{
FileStream fs = System.IO.File.OpenRead(Path.GetFullPath(fileData.FileName));
ZipFile zf = new ZipFile(fs);
foreach (ZipEntry zipEntry in zf)
{
}
}
else
{
var fileName = Server.MapPath("~/Content/uploads/" + Path.GetFileName(fileData.FileName));
fileData.SaveAs(fileName);
return Json(true);
}
}
return Json(false);
}
答案 0 :(得分:1)
HttpPostedFileBase.FileName
是上传文件的名称,而不是存储在服务器上的文件上的位置。 HttpPostedFileBase
不会将文件存储在服务器上,仅作为流存储。您的选项要么在内存中打开流(如果您的第三方实用程序允许打开流),要么将文件保存到已知位置,然后从该位置打开它。
答案 1 :(得分:0)
Path.GetFullPath
从当前目录获取完整路径
这与您的HttpUploadedFileBase
无关,而{{1}}不在磁盘上。
您需要传递流而不是文件路径。
答案 2 :(得分:0)
如果要检查它是否是zip文件,您可以随时查看返回的内容类型。
application/zip
这可能适合您要做的事情。另外,只要尝试查看内容类型,您就可以找到更符合您需求的内容。