簡體   English   中英

WinSCP .NET程序集 - 如何在創建目錄后設置文件夾權限?

[英]WinSCP .NET assembly - How to set folder permissions after creating directory?

我正在構建一個網站,我希望當用戶注冊時,在SFTP服務器上創建一個目錄並在該目錄中放入一個新文件

我正在使用WinSCP .NET程序集,並編寫C#。

我注意到你只能在方法中設置權限: Session.PutFiles而不是方法: Session.CreateDirectory

在我創建目錄並將文件放入其中之后,我無法訪問該文件,因為我沒有權限 - 我正在使用完整的URL訪問該文件

我該如何訪問該文件?

PS。 當我手動更改目錄權限時,我可以訪問該文件。

請注意,這將回答您在創建目錄時如何設置權限的問題。 但問題的根本原因是服務器設置的默認權限是錯誤的。 服務器不應使用默認權限,以便您無法訪問自己剛剛創建的目錄/文件!

當創建目錄或之后使用WinSCP .NET程序集修改目錄時,目前無法直接設置權限。
請參閱https://winscp.net/tracker/1075

你可以破解它如下:

string directoryName = "mydir";
string directoryPath = "/home/username/" + directoryName;
string tempPath = Path.Combine(Path.GetTempPath(), directoryName);

Directory.CreateDirectory(tempPath);

try
{
    TransferOptions options = new TransferOptions();
    options.FilePermissions = new FilePermissions { Octal = "755" };
    session.PutFiles(tempPath, directoryPath, false, options).Check();
}
finally
{
    Directory.Delete(tempPath);
}

您甚至可以不創建空的臨時目錄。 只需選擇任何目錄,例如您的帳戶配置文件文件夾的目錄,並使用文件掩碼僅包含此目錄,從而防止目錄和子目錄中的文件被上載。 還要在目標路徑中使用所需遠程目錄的顯式名稱,以將上載的目錄“重命名”為所需的名稱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM