2013-03-01 75 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

相關問題