1

アップロードしたいファイルを参照できる入力タグを持つiframeがあります。

次に行っていたのは、隠しフォームデータに新しいinput type = "file"タグを作成し、ファイルのsrcを入力することでした。

すべての最後に、ユーザーが実際のフォームを送信するために使用できるボタンがあります。

送信されたフォームにはファイルが含まれますが、空になります。知らなかった根本的な出来事が起こっているのではないかと思っていました。それを読んでいると、ソースが間違っていると空のファイルが送信されることに気づきました。

これはどのように正しく行われますか?

更新:データを見ると、dom要素input:fileには、新しいアイテムに移動したい属性であるfilesという属性があります。私のフィドルは:http: //jsfiddle.net/4vNXv/

古い入力から新しい入力に移動するための新しいデータを取得できないようです。

編集:jQueryはオブジェクト全体をコピーすることでデータを維持できるのではないかと考えていました。$(this).clone()コマンドを使用しましたが、それも機能していませんでした。

4

2 に答える 2

0

ここで言及されている重要な質問は、MOVEというタイトルです。要素全体を移動してデータを移動しても、セキュリティリスクが発生するという問題は発生しないはずです。この背後にある理由は、何も作成または変更されていないということです。入力はそのまま残りますが、ある領域から別の領域に移動しただけです。

この回避策を実行するには、次のことを行う必要があります。

1.  clone the object.  This will leave a placeholder there, so it doesnt look like anything moved.
2.  use appendTo to append it to the new form.  

私が使用した以下のサンプル:

$item = $(this);
$clone = $(this).clone();
$item.after($clone).appendTo("#newForm");

この回避策により新しいオブジェクトが作成されましたが、移動または変更されるものではないため、セキュリティ上のリスクのためにコンテンツがシャッフルされることを心配する必要はありません。オリジナルが選択され、現在の場所から新しい場所(#newForm)に移動されます。

ソース情報: フォームのファイル入力フィールドの値を別のフォームの入力フィールドにコピーする

于 2012-09-10T14:41:04.293 に答える
0

ファイルフォームフィールドの編集はセキュリティ上のリスクがあるため、ほとんどのブラウザで無効になっています。

Javascriptでファイル入力要素のクローンを作成するを参照してください。

あなたのシナリオでは、2つのフォーム(1つはiframe内)を作成し、ボタンリクエストで両方を送信できると思います。

1つのボタンで2つのフォームを送信するを参照してください

于 2012-09-10T13:59:35.347 に答える