Webへファイルをアップロードしたい への返答

投稿で使用できる特殊コードの説明。(別タブで開きます。)
本名は入力しないようにしましょう。
投稿した後で削除するときに使うパスワードです。返答があった後は削除できません。
返答する人が目安にします。相手が小学生か社会人かで返答の仕方も変わります。
最初の投稿が質問の場合、質問者が解決時にチェックしてください。(以降も追加書き込み・返信は可能です。)
※「過去ログ」について書くときはその過去ログのURLも書いてください。

以下の返答は逆順(新しい順)に並んでいます。

投稿者 ぽこた  (社会人) 投稿日時 2013/6/1 00:40:23
さくらのインターネットライトプランではFTPがOKでしたので、(3)の方法でやってみました。

Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles Button1.Click
        Try
            My.Computer.Network.UploadFile(
                "d:\sample.txt""ftp://hostname.sakura.ne.jp/www/sample.txt",
                "loginID""password")
            TextBox1.Text = "アップロードできました。"
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub
End Class

これでうまくいきました!

うまくいかない原因の大半は、パラメータが間違っていることによるものでした。
ちなみに "ftp://hostname.sakura.ne.jp/www/sample.txt" の「/www」は、
さくらのローカルの初期フォルダに由来するもので、いらないプロバイダも多いと思います。

わかってしまえば簡単ですね。詳しい説明をありがとうございました。
とてもよくわかりました。ありがとうございます。
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2013/5/31 23:29:20
Web サイトにファイルをアップロードする方法としては、
 (1) Web フォルダー/WebDAV (http または https での PUT メソッド)
 (2) RFC1867 (http または https での POST メソッド)
 (3) FTP (File Transfer Protocol)
 (4) SFTP (SSH File Transfer Protocol)
 (5) FTPS (File Transfer Protocol over SSL/TLS)
などが挙げられます。

他にもいろいろな手法がありますが、どの方法が使えるのかはサーバーによって異なります。

どの方法がサポートされているのかは、そのサーバーの管理者にお問い合わせください。
上記以外のアップロード方法が採用されているサーバーもあります。


1 の場合は、WebClient サービスや MSDAIPP.DSO プロバイダーを通じてアクセスします。
ここでいう WebClient とは、System.Net.WebClient クラスのことではなく、
Windows サービスの方を指しています。
MSDAIPP (Microsoft Data Access Internet Publishing Provider) の方は
OLE DB Provider の一種であり、VB からは ADODB.Record などを通じて利用できますが
バージョンによって日本語ファイル名の扱い方が異なるので注意が必要です。
これらの他、System.Net.HttpWebRequest クラスを通じて通信することもできます。


2 の場合は、御提示の My.Computer.Network.UploadFile が使えます。
あるいは、System.Net.HttpWebRequest を通じて利用することもできます。
いずれの方法を取るにしても、サーバー側には、POST でアップロードされてきた
ファイルを受け取って保存するための Web ページが必要です(Upload.aspxなど)。


3 の場合も、御提示の My.Computer.Network.UploadFile が使えます。
My.Computer.Network.UploadFile("C:\Folder01\Sample.TXT", "ftp://example.com/Folder01/Sample.TXT", user, pass)
より細かい制御(フォルダ作成など)が必要な場合は、System.Net.FtpWebRequest を使えます。
System.Net.FtpWebRequest の具体例は下記などをご覧ください。
http://dobon.net/vb/dotnet/internet/ftpwebrequest.html


4 の場合には、VB にはそのための簡単な仕組みが用意されていないため、
適当な SFTP クライアント(WinSCP など)を用意し、それを VB から
コマンドライン起動するなどして対応することになるでしょう。5 も同様です。
投稿者 shu  (社会人) 投稿日時 2013/5/31 14:39:26
どぼんさんのサイトのものです
http://dobon.net/vb/dotnet/internet/webrequestpost.html

http://www.pocota.com/upload.aspx
が存在していて
POST用のフィールド名としてfileが用意されている必要があります。
投稿者 ぽこた  (社会人) 投稿日時 2013/5/31 13:41:17
このサイトのサンプルプログラムで、Webからファイルをダウンロードするのはできましたが
逆にWebへファイルをアップロードする方法がよくわかりません。

MSDNでこんな例文を見つけましたが、404エラーです。

My.Computer.Network.UploadFile(
 "C:\Order.txt",
 "http://www.pocota.com/upload.aspx","ID","password")


Webへファイルをアップロードする方法を教えて下さい。