2013-03-01 71 views
0

我有我的控制器验证码:不知道Directory.CreateDirectory()是如何工作的

public ActionResult Upload(ScormUploadViewModel model) 
{ 
    if (ModelState.IsValid) 
    { 
    if (model.ScormPackageFile != null) 
    { 
     string zipCurFile = model.ScormPackageFile.FileName; 
     string destinationDirectoryName = Path.GetFullPath(zipCurFile); 
     //.GetFileNameWithoutExtension(zipCurFile); 
     Directory.CreateDirectory(destinationDirectoryName); 
    } 
    } 
} 

我通过我的看法上传一个zip文件,然后根据需要将它解压缩在同一位置与文件夹中相同的名称zipfilename

的文件:C:\ TFSPreview \锌\网络\项目\ ScormPackages \ Windows 8的训练的SkyDrive - Spanish.zip

我需要建立在C文件夹:\ TFSPreview \ Zinc \ Web \ Project \ ScormPackages \ ,名称为:Windows 8 Training SkyDri已经 - 西班牙

因而有:C:\ TFSPreview \锌\网络\项目\ ScormPackages \ Windows 8的训练的SkyDrive - 西班牙\

并解压缩在这上面的文件夹包含在C中的所有文件:\ TFSPreview \ Zinc \ Web \ Project \ ScormPackages \ Windows 8培训SkyDrive - Spanish.zip

所以我的问题是:将CreateDirectory()创建文件夹Windows 8培训SkyDrive - 在C:\ TFSPreview \ Zinc \ Web \ Project \ ScormPackages \或者它会尝试并创建文件夹在C:?

感谢

回答

2

它将创建内部C:\TFSPreview\Zinc\Web\Project\ScormPackages\的目录。 In fact,它会创建在路径中的所有目录如果它们不存在:

任何和路径指定的所有目录的创建,除非他们 已经存在或除非路径的某些部分是无效的。路径 参数指定目录路径,而不是文件路径。如果 目录已存在,则此方法不会创建新目录 ,但会为现有目录返回DirectoryInfo对象。

然而,这个代码有缺陷:destinationDirectoryName不是一个目录路径,它是一个文件目标目录内的路径。所以,你应该做的是

// zipCurFile = C:\...\ScormPackages\Windows 8 Training SkyDrive - Spanish.zip 
// Path.GetDirectoryName gives "C:\...\ScormPackages" 
// Path.GetFileName gives "Windows 8 Training SkyDrive - Spanish" 
// Path.Combine on these two gives you the correct target 

Directory.CreateDirectory(
    Path.Combine(
     Path.GetDirectoryName(zipCurFile), Path.GetFileName(zipCurFile)); 
+0

谢谢,我已经设置了权限,使用Windows资源管理器和默认的应用程序池的东西,但窗台坐上CreateDirectory行拒绝错误访问???访问路径'C:\ Program Files(x86)\ Common Files \ Microsoft Shared \ DevServer \ 11.0 \ Windows 8培训SkyDrive - Spanish.zip'被拒绝。 ???这个目录路径不正确,我想在C:\ TFSPreview \ Zinc \ Web \ Project \ ScormPackages \我不明白吗? – 2013-03-01 12:07:25

+0

@charlie_cat:显然'zipCurFile'的值不是你所期望的,你需要修复这个值。垃圾进垃圾出。 – Jon 2013-03-01 12:08:47

+0

非常感谢!现在一切都好! :) – 2013-03-01 12:36:09

相关问题