- ベストアンサー
写真を添付したメールで回答するアンケート作成の方法
- 写真で回答するアンケートを作りたいが、画像が送れずに困っている
- enctypeをmultipart/form-dataに設定すると、空のメールが送信される
- アンケートの回答部分をメール本文、選択した写真を添付書類にしたい
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
【引用】____________ここから action = uri [CT] この属性は、フォーム処理エージェントを指定する。HTTPスキームURI以外の値の場合のユーザエージェントの動作は、定義しない。 method = get|post [CI] この属性は、フォームデータ集合を提出する際にどちらのHTTPメソッドを用いるかを指定する。 可能な値は、大文字小文字を区別せず、「get」(デフォルト値)と「post」である。使用法については フォームの提出の項を参照のこと。 enctype = content-type [CI] この属性は、(method属性値がpostの場合)サーバに提出する際のMIMEタイプを指定する。 デフォルト値は "application/x-www-form-urlencoded"である。 INPUT要素でtype="file"のものと組合せる場合は、この値に "multipart/form-data"を指定する必要がある。  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ここまで[Forms in HTML documents (ja)( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/interact/forms.html#h-17.3 )]より 仕様書くらいは、一度通して読んでおきましょう。 よって、かならず <form action="/cgi/mailForm.cgi" method="post" enctype="multipart/form-data"> になります。 ・デフォルトのGET(Querystring)の許容量をオーバーします。 CGI側で、画像の処理をします。Perlが使えれば、多くの場合ImageMagickないしPerlMagickが使えますので、メールで扱える範囲内にデータを縮小するなりして送信すれば良いです。 https://www.google.co.jp/?gws_rd=ssl#q=%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0%E3%83%A1%E3%83%BC%E3%83%AB+%E7%94%BB%E5%83%8F%E6%B7%BB%E4%BB%98+magick+OR+gd&safe=off
その他の回答 (1)
- yambejp
- ベストアンサー率51% (3827/7415)
HTMLではきびしいと思いますよ ユーザーが手で添付するか、サーバーサイドのプログラムで処理するかの どちらかになると思います
お礼
回答ありがとうございます。 ユーザインタフェースは変えたくありませんので、サーバーサイドのプログラムで処理する方法を教えてほしいです。 <form name="a" method="post" action="yyyyy.cgi " enctype="text/plain"> とすれば、action="mailto:xxxx " では送られなかった、 回答内容と、写真データがサーバーに送られ、 サーバーサイドに yyyyy.cgi を作れば可能 ということでしょうか?
お礼
回答ありがとうございます。 enctype="multipart/form-data" の場合、 action="mailto:xxxx" では何も送信されない。 action="cgitest.cgi"であれば、希望したデータが送られる。 こと以下の方法で確認できました。 cgiファイルの作り方で時間がかかりお礼が遅くなりましたが、exeファイルの拡張子をcgiに修正するだけでOKなのですね。 具体的には、 action="cgitest.cgi" enctype="multipart/form-data" とし、以下のCプログラムの実行ファイル test.exe を cgitest.cgi に改名してHTMLファイルと同じフォルダに置いて、 送信ボタンを押したところ、 回答部分のテキストデータと、選択した写真のバイナリデータが受信できました。 --------------------- #include <stdio.h> #include <fcntl.h> #include <io.h> int main(void) { int c; FILE *fp; fp = fopen("temp.dat","wb"); setmode(fileno(stdin), O_BINARY); while((c=fgetc(stdin)) != EOF ) { fputc(c,fp); } fclose(fp); return 0; }