0

YouTube の API を使用して、ブラウザからサーバーに動画を直接アップロードしています。彼らのAPI ドキュメントでは、標準の HTML フォームを使用してビデオをアップロードしています。このプロセスは機能しますが、アップロードの進行状況バーを追加したいと思います。これは古い学校のフォームのアップロードで可能ですか、それとも同じことを非同期で行う方法はありますか? asp.net mvc\api を使用しています。ありがとう!

<form action="URL?nexturl=http%3A%2F%2Fwww.example.com" method="post"
  enctype="multipart/form-data" onsubmit="return checkForFile();">
  <input id="file" type="file" name="file"/>
  <div id="errMsg" style="display:none;color:red">
    You need to specify a file.
  </div>
  <input type="hidden" name="token" value="TOKEN"/>
  <input type="submit" value="go" />
</form>
4

1 に答える 1

2

いいえ、標準のアップロードでプログレス バーを表示することはできません。フォームを送信すると、技術的にはすでにページを終了しています。ブラウザは、アップロードが完了してフォームが完全に投稿されるまで、サーバーから何か新しいものを受信して​​ロードするまで、それを保持します。それまでの間、あなたのページは本質的に死んでいます。

これまでは、Flash や Java コントロールを使ってこれを実現していましたが、単純な古い HTML や JavaScript だけではそれを行う方法がなかったため、非同期ファイル転送を許可するだけでした。

HTML5 では、AJAX ファイルのアップロードが可能になりました。簡単な紹介については、http://www.sitepoint.com/html5-javascript-file-upload-progress-bar/を参照してください。これは最新のブラウザーでのみサポートされていることに注意してください (つまり、IE6-9 はサポートされていません)。iframe を使用して非同期アップロードをシミュレートするフォールバックを利用できます。ちょっとグーグルをしてください。

于 2013-04-08T20:08:43.887 に答える