
お疲れ様です。いつもお世話になっております。
on~~イベントで値をコピーするやり方でいけるのかもと思いつつ、
うまくイメージがまとまらないので質問させてください。
<input type="file">で、ファイルが選択されたら、その値(ファイルのパス)を同じフォーム内のhiddenにも持ちたいのです。
もっと具体的にいうと
hiddenに持った時、ファイル名の拡張子にかかわらず、拡張子を落として、[ファイル名]_thumnail.jpgとつけて、submitしたいのです。
<form action="xxx.php" method="post" enctype="multipart/form-data" name="myForm">
<input type="file" name="upfile" />
<input type="hidden" name="thumnail" />
</form>
document.myForm.upfile.value=document.myForm.thumnail.value;
みたいな感じでできるのでしょうか。
よろしくお願いします。
No.3ベストアンサー
- 回答日時:
以下のコードを参考にしてみてください。
------------------------------------------------------------
onchange='setHidden(this.form)'
------------------------------------------------------------
<script type="text/javascript">
<!--
function setHidden(f) {
var uf = f.upfile.value;
document.myForm.thumnail.value = uf.substring(0,uf.lastIndexOf(".")) + "_thumnail.jpg";
alert(document.myForm.thumnail.value);
}
// -->
</script>
------------------------------------------------------------
具体的なコードありがとうございます。
結局、質問の事項は(こちらの意図するようには)使えないということがわかったので、今回はせっかくのコードも利用できませんが、
勉強になります。
いつか必ず使うときがくるから、そのとき参考にさせていただきます。
No.5
- 回答日時:
> document.myForm.upfile.value=document.myForm.thumnail.value;
fileフィールドはreadOnlyですので、これはできません。
もし書き換えができてしまうと、
document.myForm.upfile.value='C\\個人情報が書かれてそうなファイル名';
document.myForm.submit();
ページを表示するだけで、何かのファイルがアップロードされる可能性があります。
<iframe>を隠しておいてtarget指定すると、送信されたことも気づけないかも知れません。
ファイル名を調べるだけなら
document.myForm.thumnail.value=document.myForm.upfile.value;
文字列として受け取れます。
fileフィールドの値は、ブラウザによってフルパスになったり、ファイル名だけになったりの違いがあります。
ブラウザ設定の「ファイルアップロードにはフルパスを含める」の設定にも依存するかも知れません。
やるのならhiddenフィールドの値がthumbnailで、fileフィールドはもとの画像のファイル名ってことにした方が良いと思います。
ふむ。
>やるのならhiddenフィールドの値がthumbnailで、fileフィールドはもとの画像のファイル名ってことにした方が良いと思います。
もとよりそのつもりでした。
すみません。書き方が悪かったみたいです。
レスありがとうございます。
No.4
- 回答日時:
因みにどんな頑張ってファイル名を加工しても
その方法だと画像そのものがアップロードできなくなるよ。
ファイル名加工後の名前を「付加」するしかないし、画面移行するとアップロードデータを持ち越せない筈。
結局サーバサイドでどうにかするかファイル名の候補だけ付加するって妥協案になるとおもうよ
No.2
- 回答日時:
formのonsubmitで実行させればよいかと思う。
<form ~ onsubmit="hoge(this)">
function hoge(F){
var pos=F.upfile.value.lastIndexOf('\\');
F.thumnail.value = F.upfile.value.substring(pos+1) + '_thumnail.jpg';
}
※ パスの部分は削除しているが拡張子は残してある。元ファイルの拡張子は在っても邪魔にならないと思う。
ただ、全角や妙な記号混じりのファイル名とか来たら困るので
この手の処理はサーバ側でやるのが常。
(使えるなら元のファイル名を使う、使えないファイル名が来たら適当に連番を振ってやる。とか)
ふむふむ
具体的なコードありがとうございます。
ブラウザの仕様などによっても違うのですね。
サーバサイドしかやったことがないので、その辺わかりませんでした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
javaScriptの変数をJavaの変数...
-
JavaScriptのfileオブジェクト...
-
onclickが動作しない
-
<input>の選択肢をプルダウンメ...
-
Selectボックスの幅を自動で広...
-
ボタン無しでフォーム内容送信
-
<JavaScript>tableタグを入力不...
-
同じ名前のセレクトがある場合...
-
doPostBack 関数について
-
tableの任意行にfocusをあてる
-
二次元配列に数字をランダムに...
-
JQueryで2つのテキストフィー...
-
特定<table>内の<td>の色を変える
-
削除ボタンの確認ダイアログを...
-
javascriptで<table>背景色の取得
-
C#(csファイル)とjavascriptと...
-
RegularExpressionValidatorの...
-
name = cats[1] という input ...
-
1つのform内に2つのsubmitボタ...
-
プルダウンで選択された値を別...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
onchangeイベントを強制的に発...
-
javaScriptの変数をJavaの変数...
-
VB.NETで<Input>タグ、<text...
-
iOSのみダブルタップが必要
-
JavaScriptのfileオブジェクト...
-
追加ボタンを押した際に ok ボ...
-
onClickがinput type="image"だ...
-
innerHTML内では改行は禁止?
-
javascriptでチェックボックス...
-
パラメータから取得した文字をH...
-
クリックさせたいが、click()が...
-
JSPファイルにJavaScriptを埋め...
-
ボタンで配列に代入
-
任意の<DIV></DIV>の中に計算結...
-
javascript教えてください
-
WordpressのCocoonというテーマ...
-
ボタンかリンクをクリックする...
-
HTMLのテキストボックスへのド...
-
onclickが動作しない
-
複数のボタンに対するActionと...
おすすめ情報