【解決方法】ネットワーク上の別のコンピュータにファイルを保存するにはどうすればよいですか?


パス //172.20.2.50/sharedfolder/ へのアクセスが拒否されました。

一方、172.20.2.50 は、ファイルを保存したい同じネットワーク内にある他の PC の IP です。
助けてください…

私が試したこと:

<pre>protected void btnUpload_Click(object sender, EventArgs e)
    {
        if (FileUpload1.HasFile)
        {
 
            filename = FileUpload1.PostedFile.FileName;
            
            string filepathfb = "////172.20.2.50//sharedfolder//" + filename;
 
            FileUpload1.SaveAs(filepathfb);

解決策 1

これは、リモート コンピューターがユーザー (Web サーバー上のユーザー、つまり「実際の」ユーザーではなく IIS ログインである可能性があります) にそのフォルダーへのファイルの書き込みを許可するアクセス許可を設定していないため、拒否されます。

フォルダーのアクセス許可を確認するか、これを頻繁に行う場合は、(適切なログイン詳細を指定して) ドライブ文字を共有フォルダーに接続し、毎回 IP アドレスに依存するのではなく、そのディスクに直接保存します。

解決策 3

ASP.NET を使用してネットワーク コンピューター上の共有フォルダーにファイルを保存する場合、あなたのアプローチは正しいようです。 ただし、次のような調整が必要な場合があります。

UNC パス形式: UNC (Universal Naming Convention) パスは、スラッシュ (//) の代わりに二重バックスラッシュ (\\) を使用して指定する必要があります。 UNC パス形式は \\computername\sharedfolder のようになります。

ファイル パスの形式: ファイル パスが正しく形式設定されていることを確認します。 あなたの場合、最初に //// を使用していますが、これは不要です。 UNC パスの先頭に必要なバックスラッシュは 2 つだけです。

コードの修正バージョンは次のとおりです。

C#
protected void btnUpload_Click(object sender, EventArgs e)
{
    if (FileUpload1.HasFile)
    {
        string filename = FileUpload1.FileName;
        string filepath = @"\\172.20.2.50\sharedfolder\" + filename;
        
        FileUpload1.SaveAs(filepath);
    }
}

このコード スニペットでは次のようになります。

FileUpload1.FileName は、アップロードされたファイルの名前を取得するために使用されます。
@”\\172.20.2.50\sharedfolder\” は、ネットワーク コンピューター上の共有フォルダーへの UNC パスを指定します。
FileUpload1.SaveAs(filepath) は、アップロードされたファイルを指定されたパスに保存します。
ASP.NET アプリケーションを実行するアカウントに、ネットワーク コンピューター上の共有フォルダーへの書き込みに必要なアクセス許可があることを確認してください。 さらに、ASP.NET アプリケーションをホストしている Web サーバーからネットワーク パスにアクセスできることを確認してください。

コメント

タイトルとURLをコピーしました