まず、画像要素にイベントリスナーを設定する必要があります。私はあなたにネイティブのjavascriptの例を与えます。なぜなら、それはjQueryよりも速く、JavaScriptフレームワークを使用するペイロード(もしあなたがとにかくそれを使用していなければ)が重すぎるからです。何百キロバイトのjQuery Frameworkと5kBのネイティブソリューションを比較してください。
ここで行く:
<input type="file" name="imageToUpload" id="image" accept="image/*">
<script>
var fileNode = document.querySelector('#image'),
form = new FormData(),
xhr = new XMLHttpRequest();
fileNode.addEventListener('change', function(event) {
event.preventDefault();
var files = this.files;
for (var i = 0, numFiles = files.length; i < numFiles; i++) {
var file = files[i];
// check mime
if (['image/png', 'image/jpg'].indexOf(file.type) == -1) {
// mime type error handling
}
form.append('my-files[]', file, file.name);
xhr.onload = function() {
if (xhr.status === 200) {
// do sth with the response
}
}
xhr.open('POST', 'upload.php');
xhr.send(form);
}
});
</script>
私は「何をここでやりましたか?要するに、私は最新の3つのメジャーバージョンのすべての現代のブラウザで動作するjavascriptネイティブFormData APIとXHR Objectを使って作業しています。次に、ファイルノードにイベントリスナーを配置します。これにより、ユーザーがファイルを選択するたびにchangeイベントがトリガーされます。 File APIでは、ファイルを取得してすべてのファイルをループします。ここでは、MIMEタイプとサイズに関するいくつかのチェックを実行できます。ファイルが有効な場合は、xhrオブジェクトでアップロードします。
あなたのupload.phpファイルは、もう一度すべてのセキュリティチェックを行う必要があります。 $ _FILES配列のMIMEタイプ、サイズ、エラーメンバーを確認してください。この例では、ファイルは$ _FILES ['my-files']に格納されています。
ドラッグアンドドロップのサポートとプログレスバーを表示するには、数日前にthis exampleを書きました。サイトのソースコードを見てください。
あなたはまだ試したことがありますか? –
@MayankPandeyzまあ、私はファイルを選択し、その画像をアップロードするためのボタンを押すことによって画像をアップロードする古典的な方法を試しました。しかし、イメージを選択してファイルダイアログで "OK"を押すと、何とかアップロードする必要があります。 – Gigaxel
ファイルダイアログにOKタイプのものはありません。アップロードボタンを押すか、入力ファイルの変更イベントを使用する必要があります –