JSは、ブラウザーCの問題を解決するために、入力タグtype = "file"の物理パスを取得します:\ fakepath \

画像をクリックしてアップロードした後、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()メソッドを使用する必要があります。ページが閉じられると、ブラウザーはそれを自動的に解放しますが、最高のパフォーマンスとメモリー使用量を得るために
、それがもはや使用できないことが確認されたら、解放する必要があります。

  

 

おすすめ

転載: www.cnblogs.com/Mishell/p/12746407.html