• 締切済み

form ファイルアップロードを プログラムで再現

html + CGI などで、 form を使いパソコン内のファイルをサーバーなどにアップロードできますが、 その際、HTMLなどの form からではなく、 独自に作ったプログラムから form と同様のリクエストを送り、 サーバー上にファイルをアップロードしたいのですが、 どのようにすればよいのでしょうか? 独自のプログラムは、本来のformがあるページとは違うドメイン もしくはローカルパソコンから実行するものとします。 言語は何でもかまいません。

みんなの回答

回答No.2

#!/usr/bin/perl use strict; use warnings; use LWP; use HTTP::Response; use HTTP::Request; use HTTP::Request::Common; use constant UPLOAD_CGI => 'http://localhost/cgi-perl/CGI.pm/upload.cgi'; use constant REFERER => 'http://localhost/'; my $file = 'upload_file'; my $ua = LWP::UserAgent->new; $ua->agent('Mozilla/5.0'); $ua->timeout(10); my $req = POST( UPLOAD_CGI, Content_Type => 'form-data', Content => [ upload_file => [$file], submit => 'Upload' ], Referer => REFERER ); my $res = $ua->request($req); $res->is_success or die UPLOAD_CGI, ": ", $res->message, "\n";

uniuniuni1
質問者

お礼

ヒントになりました。 ありがとうございます。

  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.1

windowsでしたら、ftpを使うと良いのでは? CGIを使うと、送られてきたデータを処理して同じサーバーの指定された場所に書き込むのです。  HTMLとかCGIとかは重要ではなく、HTTPで接続してデータの交換を行っていると考えたほうが理解しやすいでしょう。  HTTP自体は、あくまでデータの転送方法ですから、HTTPでデータを送られたら指定されたプログラムが指定された処理を行っている。  ところが、HTTPを使わずにサーバーと接続してデータを送るとなると、最も簡単ななのはFTPでしょう。  インターネットではFTPやMailはHTTPよりも歴史の古い伝統的な方法です。  ftpコマンドを使ったファイル転送方法 ( http://www.cc.u-tokai.ac.jp/FAQ/PC/ftp-command/ftp.html ) FTPコマンドでファイル転送する ( http://win.kororo.jp/archi/www/ftp_command.php )  直接コマンドプロンプトから実行するのが確実で簡単なのですが、コマンドプロンプトを使い慣れてなければ、MS-DOSだろうが、VBだろうが、Perlだろうが、これを使ってFTPをあつかう。  もっと基本的なところからなら  Winsockをつかってプログラムを開発する? Winsock - Wikipedia ( http://ja.wikipedia.org/wiki/Winsock ) Windows ソケット ( http://wisdom.sakura.ne.jp/system/winapi/winsock/index.html ) ソケットプログラミング ( http://www.katto.comm.waseda.ac.jp/~katto/Class/GazoTokuron/code/socket.html )

関連するQ&A