- ベストアンサー
Formの中で別のactionをもったsubmitボタンの設置
- HTMLフォームには、別のactionを持つsubmitボタンを設置することができます。
- しかし、フォーム内のsubmitボタンが持つactionが異なるため、フォームのデータを正しく送信することができません。
- フォーム内でファイルを添付する場合は、JavaScriptを使用してファイルを別のアクションで送信する必要があります。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
すみません、補足の訂正です。 No.3さんのはtype="file"ではなくtype="hidden"でしたね。 申し訳ありませんでした。 あと、最近のブラウザでは、ファイル名は送信するけれども、 パスは送信しないような傾向になってきています。 だからパスが送られてくる前提のプログラムも今後は避けたほうがいいでしょう。 これもセキュリティ上の問題です。
その他の回答 (4)
- durarara
- ベストアンサー率47% (21/44)
補足です。 type="file"のvalueに対して、サーバ側で値を設定することはできません。 JavaScriptでできないのと同じ理由だと思います。 質問のソースを見ると、アップロードの仕方を処理によって分けたいため フォームも分けているということですよね。 ファイル名やサムネイルを表示できるのはアップロード後のことなので この段階では無理でしょう。 もし処理をわけたいのでしたら、 ひとつのフォームで送信してサーバ側で振り分けるか、 フォームもサーバ側のプログラムも別にするしかないのではないでしょうか。 今はAjax全盛の時期なのでJavaScriptを避ける理由は特にないと思います。 もちろんサーバ側でやったほうがいい処理まで書く必要は無いと思いますが。
- ORUKA1951
- ベストアンサー率45% (5062/11036)
<input type="hidden" name="text"> <input type="hidden" name="file"> ではなく、CGIにいったん渡して、 <input type="hidden" name="text" value="なんたらかんたら">なんたらかんたら <input type="hidden" name="file" value="file:///C:\temp\abc.jpg">abc.lpg とかにすべき、 画像はサーバーのimageMagickをつかってサムネイルを表示させるとか・・ javascriptは使うべきではない。色々な面で・・
- durarara
- ベストアンサー率47% (21/44)
No.1さんの言うとおりだと思いますので、 こうしたらいかがでしょう。 //*** 送信画面 function func1(form){ form.action="sousin.php" form.submit(); } //*** ユーザー追加画面 function func2(form){ form.action="text.php" form.submit(); }
お礼
POST先をかえるんですね。 ありがとうございます。
- yambejp
- ベストアンサー率51% (3827/7415)
javascriptでファイルの指定をしたいという要望でしょうか? セキュリティの問題で、まっとうなブラウザではできません。
お礼
ありがとうございます。 やはりできないのですね。。。。
お礼
ありがとうございました。 なかなか複雑なのですね。