FTPサーバ側の所定フォルダへ毎回同じ名前のファイルがアップロードされる仕組みがあります。サーバ側の処理の関係で、FTPによって配置されるファイルは 同名である必要がありますが、当該機能の利用者が複数いる状況を鑑み、上書きを抑制する策を投じたいです。
FtpWebRequest にそのようなオプションは あるのでしょうか?
ASP.NET
1Protected Sub btnFileUpload_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnFileUpload.Click 2 3 If FileUpload1.HasFile Then 4 5 Dim now As DateTime = DateTime.Now 6 Dim Path As String = "C:\temp\" & now.ToString("yyyyMMddHHmmss") & "\" 7 Dim fileName As String = FileUpload1.PostedFile.FileName 8 Dim filePath As String = Path & fileName 9 10 System.IO.Directory.CreateDirectory(Path) 11 FileUpload1.SaveAs(filePath) 12 13 'アップロード先のURI 14 Dim reqUri As New Uri("ftp://XX.XX.XX.XX/rcv/abcdefg.txt") 15 16 Dim ftpReq As FtpWebRequest = FtpWebRequest.Create(reqUri) 17 18 'アップロードに設定 19 ftpReq.Method = WebRequestMethods.Ftp.UploadFile 20 21 'ユーザー名とパスワードを設定 22 ftpReq.Credentials = New NetworkCredential("9999999", "hogehoge") 23 24 '要求の完了後に接続を閉じる 25 ftpReq.KeepAlive = False 26 27 'ASCIIモードで転送する 28 ftpReq.UseBinary = False 29 30 'PASVモードを無効にする 31 ftpReq.UsePassive = False 32 33 'ファイルをアップロードするためのStreamを取得 34 Using reqStrm As Stream = ftpReq.GetRequestStream() 35 36 'アップロードするファイルを開く 37 Using fStrm As New FileStream(filePath, FileMode.Open, FileAccess.Read) 38 'アップロードStreamに書き込む 39 Dim buffer(1023) As Byte 40 While True 41 Dim bSize As Integer = fStrm.Read(buffer, 0, buffer.Length) 42 If bSize = 0 Then 43 Exit While 44 End If 45 reqStrm.Write(buffer, 0, bSize) 46 End While 47 End Using 48 49 End Using 50 51 lblMsg.ForeColor = Drawing.Color.Blue 52 lblMsg.Text = "ファイルのアップロードが完了しました。" 53 End If 54 55 End Sub 56 57 58End Class
質問がアバウトすぎます。
「そのようなオプション」とはどのようなオプションで、何が指定できて、各指定ごとに既存のどんな動作が具体的にどういう条件でどうなるものですか?
それで実装が正確にできるレベルで具体的に記述してください。
また、FtpWebRequestは以下で解説されています(.NET Framewrok 4.8)。
https://docs.microsoft.com/ja-jp/dotnet/api/system.net.ftpwebrequest?view=netframework-4.8
そのどの辺が不明なのでしょうか?具体的に引用してください。
dameo様 ご支援ありがとうございます。
>「そのようなオプション」とはどのようなオプションで、
ローカルからアップロードされるファイルの同一ファイル名が、サーバの所定フォルダ(仮想jフォルダ)に実在していない場合に限りアップロードを行いたく、同一ファイルが存在していたら、Exceptionを検知する動作はできないか? というのが希望です。サーバ上のファイルを上書きしたくないの一言ですが、相変わらず 的はずれな回答を致しておりましたら 申し訳ありません。
記事の紹介ありがとうございます。
アップロード前に 当該ファイルのダウンロードを試み、存在していないことを検知したらアップロードへ進めばよい、ということですかね...
分かりが悪くすみません。
質問の訂正依頼をしたつもりなのですが…
そして、そのコメントにも
・何が指定できるのか?
・各指定ごとに既存のどんな動作に影響するのか?
・各指定ごとに既存の各動作にどういう条件で影響するのか?
・各指定ごとに既存の各動作が各条件でどう変わるのか?
記述されていません。あなたが最終的にやりたいことをいくら書いても仕方ないです。
FtpWebRequestの件では、私は回答をしていません。
当然読んでいるはずのWebページのどこが疑問なのかを聞いているだけです。