ファイル入力を使用せずにファイルのアップロードを偽造したい。ファイルのコンテンツは文字列から生成されます。つまり、コンテンツ タイプが "multipart/form-data" のサーバーに文字列を投稿したいと考えています。
しかし、サーバーは別のドメインにあり、CORS をサポートしていないため、XMLHttpRequest を使用できませんでした。通常のフォームポストのみを使用してこれを行うことは可能ですか?
ファイル入力を使用せずにファイルのアップロードを偽造したい。ファイルのコンテンツは文字列から生成されます。つまり、コンテンツ タイプが "multipart/form-data" のサーバーに文字列を投稿したいと考えています。
しかし、サーバーは別のドメインにあり、CORS をサポートしていないため、XMLHttpRequest を使用できませんでした。通常のフォームポストのみを使用してこれを行うことは可能ですか?
それは実際にはいい質問です。私の謙虚な意見では、あなたが探しているものは、以下にリストされているようなさまざまな理由で不可能です:
あなたは確かに次のようなHTMLフォームを持つことができます:
<form ....>
<input id="blah" type="input" name="nameblah" ..>
...
</form>
しかし、ご存知のように、選択したファイルの「コンテンツ」にアクセス/変更することはできません。即時の解決策は、代替として非表示フィールドを使用してを設定することenctype=multipart/form-data
ですが、非表示フィールドの場合、ブラウザーは適切なContent-Disposition
ヘッダーを設定しません。
リクエスト本文全体を手動で構築するAJAX呼び出しを行うこともできますが、すでに述べたように、それはクロスドメイン呼び出しになります。通常のバイパス手法が適用されます。
解決策は、HTMLを提供するサーバーに、スカイドライブ要求を実行させることです。その場合、HTMLフォームまたはjavascriptを使用してファイルをアップロードします。その後、ファイルはスカイドライブサーバーに「転送」されます。
Javascriptを介して試行している場合は、multipart/form-data
フォーマットを正しく取得してください。これがRFCです