画像をクリックしてアップロードした後、onchangeイベントは画像をアップロードする方法を取得します
どうしようもない、私はCのような偽のパスを取得しました:\ fakepath \ aa.jpg
Baiduがチェックアウトしました:
これはブラウザのセキュリティメカニズムによるもので、入力ファイルのパスは、実際の物理パスを隠すfakepathに置き換えられます。
解決策:
1.ブラウザーのブラウザーセキュリティ設定を調整します(非推奨または妥当ではありません)。
2. window.URL.createObjectURL()を使用します
var url = null; var fileObj = document.getElementById( "uplaodImg")。files [0]; if(window.createObjcectURL!= undefined){ url = window.createOjcectURL(fileObj); } else if(window.URL!= undefined){ url = window.URL.createObjectURL(fileObj); } else if(window.webkitURL!= undefined){ url = window.webkitURL.createObjectURL(fileObj); } // console.log(url) if(url){ $( '#user_avatar')。attr( 'src'、url) }
説明:
URL.createObjectURL()メソッドは、渡されたパラメーターに基づいてパラメーターオブジェクトを指すURLを作成します。URLの存続期間は、それが作成されたドキュメントにのみ存在します。 新しいオブジェクトURLは、実行されたFileオブジェクトまたはBlobオブジェクトを指します。 構文:objcetURL = window.URL.createObjectURL(file || blob); パラメーター:FileオブジェクトとBlobオブジェクト; Fileオブジェクトはファイルです。たとえば、file type = "file"タグを使用してファイルをアップロードし、次に各ファイルをアップロードしますどちらも ファイルオブジェクトです。Blobオブジェクトはバイナリデータです。たとえば、XMLHttpRequestでは、requestTypeがblobとして指定されている場合、戻り値も blobオブジェクトです。 createObjectURLが呼び出されるたびに、新しいURLオブジェクトが作成されます。同じファイルのURLを作成した場合でも、この オブジェクトが不要になった場合、それを解放するには、URL.revokeObjectURL()メソッドを使用する必要があります。ページが閉じられると、ブラウザーはそれを自動的に解放しますが、最高のパフォーマンスとメモリー使用量を得るために 、それがもはや使用できないことが確認されたら、解放する必要があります。