ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScript html5_javascript スキルに基づいて複数のファイルのアップロードを実装する

JavaScript html5_javascript スキルに基づいて複数のファイルのアップロードを実装する

WBOY
リリース: 2016-05-16 15:12:18
オリジナル
1854 人が閲覧しました

この記事の例では、JavaScript html5 を使用して複数のファイルのアップロードを実装する方法を説明します。具体的な内容は次のとおりです。

HTML 構造:

<div class="container">
  <label>请选择一个图像文件:</label>
  <input type="file" id="file_input" multiple/>
</div>
ログイン後にコピー

ところで、このアップロードの主なロジックについて話しましょう:

  • input タグを使用して type=file を選択してください。複数指定しないと、単一の画像しか選択できません
  • 入力の変更時間をバインドします、
  • 重要な点は、この変更イベントを処理する方法です。H5 の新しい FileReader インターフェイスを使用してファイルを読み取り、base64 にエンコードします。次に、バックエンドのクラスメートと対話します。 🎜>
JS コード:


window.onload = function(){
    var input = document.getElementById("file_input");
    var result,div;
 
    if(typeof FileReader==='undefined'){
      result.innerHTML = "抱歉,你的浏览器不支持 FileReader";
      input.setAttribute('disabled','disabled');
    }else{
      input.addEventListener('change',readFile,false);
    }<br>     //handler
    function readFile(){
      for(var i=0;i<this.files.length;i++){
        if (!input['value'].match(/.jpg|.gif|.png|.bmp/i)){  //判断上传文件格式
          return alert("上传的图片格式不正确,请重新选择")<br>          }
        var reader = new FileReader();
        reader.readAsDataURL(this.files[i]);
        reader.onload = function(e){
          result = '<div id="result"><img src="'+this.result+'" alt=""/></div>';
          div = document.createElement('div');
          div.innerHTML = result;
          document.getElementById('body').appendChild(div);   //插入dom树           <br>          }
      }
    }
  }
ログイン後にコピー
このように複数の写真をアップロードすることはできますか?

ただし、これは画像を Base64 エンコードに変換してフロントエンドに表示するだけです。

画像を挿入した後、開発者ツールを開き、HTML 構造が次のようになっていることを確認します

現実的なアプローチは、処理関数でファイル キュー内のファイルをバックエンドに送信し、バックエンド スチューデントが MD5 暗号化ファイルとそのファイルに対応するパスをフロント エンドに返し、フロント エンドがこのパスを使用することです。そしてそれを上位のページにレンダリングします。

その後、MD5 ファイルはバックエンドに返送されます。通常、フロントエンドはアップロード後に写真を削除するため、返送の目的は、それらの写真が必要なものであることをバックエンドに確認するように指示することであり、バックエンドは保存します。それらをデータベースに保存します。

jquery の操作方法を教えてください


function readFile(){
      var fd = new FormData();
      for(var i=0;i<this.files.length;i++){
        var reader = new FileReader();
        reader.readAsDataURL(this.files[i]);
        fd.append(i,this.files[i]);<br>          }
        $.ajax({
          url : '',
          type : 'post',
          data : fd,
          success : function(data){
            console.log(data)
          } 
        })
}  
ログイン後にコピー
FormData も H5 の新しいインターフェイスであり、フォーム コントロールの送信をシミュレートするために使用されます。最大の利点は、バイナリ ファイルを送信できることです。

成功コールバックで目的のデータを取得した後、前のメソッドと同様に、画像をページに挿入できます~

最後のレンダリング:

以上がこの記事の全内容です。皆様の学習のお役に立てれば幸いです。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート