添付ファイル送信機能の追加実装方法

浪花さん (2009-09-11 18:41:13) www.airdesigns.co.jp/sample/jibun/form/mailform/example.html

すばらしいメールフォームプログラムをフリーで公開していただき、ありがとうございます。
確認画面や入力記憶などの仕組みがカッコイイので、こちらのフォームに

 「添付ファイルを含むメールを送信する」

という機能を追加したいと考えています。
過去ログの添付ファイルの記事も拝見しましたが、
(www.synck.com/contents/download/support_bbs/1247593542.html)
そちらでサンプルとして上げていただいたプログラムなどを改造すれば、
添付機能だけを追加実装できると考え、改造作業に取り掛かりました。

しかし、添付ファイル用に「enctype="multipart/form-data"」を追加したところ
フォームデータが化けてしまい、正しく取得できない症状が発生してしまいました。
元ページ(example.htmlなど)のcharsetをShift_JISにしても化けてしまうようです。

「enctype="multipart/form-data"」を指定しない場合は正しく動作しておりますが、
添付データの取得は出来ていません。(指定がないので当たり前ですが。)

なぜデータが化けてしまうのでしょうか。
どのようにすれば、正しいデータを取得できますでしょうか。

Re:添付ファイル送信機能の追加実装方法

和田 (2009-09-12 15:57:26) www.synck.com

結構大変なんですよファイルを添付するっつーのは・・・。
まずmultipart/form-dataにすると、既存の受け取り方で受け取れなくなるためCGI.pmなどを使ってバイナリやテキストを受け取るやり方に変更しなくちゃいけないんですね。そうなると骨格から変更しなくてはならないためちょっぴりシンドいのです・・・。申し訳ない・・・。

Re:添付ファイル送信機能の追加実装方法

浪花さん (2009-09-12 16:17:23) www.airdesigns.co.jp/sample/jibun/form/mailform/example.html

土曜日だというのに返信ありがとうございます;

なるほど。
受け取り部分の仕様が関係しているのですか…。
てっきり文字コード絡みをなんとかすれば、化けないのではないかと思っていました。
確かに触りたくない部分ですよね。
反応が気持ち良いフォームだったので、これを改造できないのは残念ですが
(メール生成部分とかは既に作っていたんですが…)、今回は断念します。
返答ありがとうございました。

画像添付実装にあたって

川上さん (2010-01-12 09:02:54) sv29.wadax.ne.jp/~alnw-web-com/elucrada-contact/index.html

和田さま。

はじめまして。大変すばらしいメールフォームありがとうございます。

さて、標題の件なのですが有償オプションにてご対応をお願いできると
マニュアルに記載されていたのですが、
いかほどでお願いできるものなのでしょうか。

以上、ご確認のほどよろしくお願いいたします。

Re:画像添付実装にあたって

和田 (2010-01-12 18:03:51) www.synck.com

添付ファイル機能は現時点では4万円になります。

upload.cgiについて

とまとさん (2010-02-02 01:32:10) www.tomato.gr.jp/bcat/mailform/upload.html

はじめまして。感動的なフォームに興奮気味です(〃∇〃)☆
・・で、私もやはり添付ファイルをつけたい人の一人なんですが、今金穴なので4万は痛すぎるため(T▽T)・・苦肉の策として、thankyou.htmlを添付フォームのhtmlにして追加で写真を添付してもらおうかと思いました。
そこで、以前にDL出来るようにして頂いたupload.zipをDLして解凍して設置した所、無事にデータを送るとupload.htmlにジャンプするようになりました。
だがしかし。
jpgを参照して送信すると「ファイルタイプがマッチしません」と表示されてしまいます。
以下を見て、これだとpdfファイルじゃないとエラーになるのかな?と思い

($sec,$min,$hour,$day,$mon,$year) = localtime(time);
$save_file_path = sprintf("%04d-%02d-%02d\.jpg",$year += 1900,$mon+1,$day,$hour,$min,$sec);
$save_file_path = time . ’.jpg’;

中略

if($mimetype ne ’application/jpg’){
$msg = ’ファイルタイプがマッチしません。’;
unlink $save_file_path;
}
else {
$msg = ’JPGファイルですー’;
}



に直しましたが(上の二箇所と下の二箇所)同じ結果です。

・・と言うか、添付したファイルを入れるディレクトリを作っていないんですけど、これでよかったんでしょうか(^-^;)

お忙しいところ、まことに恐れ入りますがご教授願えれば幸いです。

upload.cgiについて

和田 (2010-02-04 11:26:25) www.synck.com

たぶんあってると思いますよっ!

いや・・・・

とまとさん (2010-02-07 22:32:32) www.tomato.gr.jp/bcat/mailform/upload.html

>たぶんあってると思いますよっ!

ですから、これに書き換えたんですけど「ファイルタイプがマッチしません」と表示されてしまいます。(T-T)

Re:いや・・・・

和田 (2010-02-07 22:35:08) www.synck.com

よく読まない子でスイマセン・・・。
if($mimetype ne ’application/jpg’){
$msg = ’ファイルタイプがマッチしません。’;

$msg = $mimetype;
としてみると原因がわかるかも。

書き換えてみました。

とまとさん (2010-02-14 01:17:11) www.tomato.gr.jp/bcat/cgi/mailform/upload.html

image/jpeg
と表示されました。。。。
(上のURL間違ってました(^-^;)すみません)

Re:書き換えてみました。

和田 (2010-02-18 17:55:37) www.synck.com

であればmimeタイプをimage/jpegにしてお試しください。
ただ、このスクリプト自体ほとんど記憶に無いため動作や挙動についてはセキュリティをある程度考えた上でご利用いただけると助かります。

ファイルの保存場所を限定するには

francieさん (2010-11-04 16:36:04) doll.naoichigo.com/sample/

いつもお世話になっています。
ファイルの添付機能の代用で、upload.cgiを使わせて頂こうと思っています。どうにか、pdf専用をzipの送信が出来るように改造できたのですが、もっとカスタマイズしたいのですが苦戦しています。力を貸して頂ければ有難いです。

その1:送信されたファイルが、決められたフォルダに入るようにしたいです。
その2:ファイル名を 月日時の表示にしたい。若しくは送信されたファイル名のままにしたい。

よろしくお願いします。

設置URLのユーザー、パスワード共にsampleです。

Re:ファイルの保存場所を限定するには

和田 (2010-11-08 03:31:10) www.synck.com

ごめんなちゃい。さすがにそれ以上はソースを普通に書くことになっちゃうんでご勘弁ください。フォルダの指定は普通にディレクトリパスを指定すればOKですが、そのままのファイル名だとサーバ側のOSによって適切に保存されません。日付を入れるのであればlocaltimeを使えば入れれます。あとは頑張って調べてみてください。

ファイルの保存場所を限定するには

francieさん (2010-11-09 09:53:26) doll.naoichigo.com/sample/

和田様

そうですよね、ソースを書いて頂いてしまう事になってしまいますものね・・・
リクエストばかりぶつけて、無知ゆえに失礼致しました。
頂いたヒントは、現時点では??ですが調べて頑張ってみます。ありがとうございました。