Flash は主要なブラウザ メーカーによって徐々に廃止され、まずプラグインのサポートがデフォルトで無効になり、次にShockwave プラグインが直接削除されました。swfupload を使用する多くの古いシステムのアップロード ボタンはクリックし続けることができません。 Flash バージョンでは、イベント処理プロセスを jquery にマウントし、SWFUpload インスタンスを作成してファイルのアップロードを処理します。 新しいファイル h5upload.js を追加します var H5Upload; if (H5Upload == undefined) { H5Upload = function (settings) { this.initH5Upload(settings); }; } H5Upload.instances = {}; H5Upload.movieCount = 0; H5Upload.version = "2.2.0 2009-03-25"; H5Upload.prototype.initH5Upload = function (settings) { try { this.customSettings = {}; // A container where developers can place their own settings associated with this instance. this.settings = settings; this.eventQueue = []; this.movieName = "H5Upload_" + (H5Upload.movieCount++); this.movieElement = null; // Setup global control tracking H5Upload.instances[this.movieName] = this; // Load the settings. Load the Flash movie. this.initSettings(); this.loadHtml(); } catch (ex) { delete H5Upload.instances[this.movieName]; throw ex; } }; H5Upload.prototype.loadHtml = function () { var targetElement, tempParent; // Make sure an element with the ID we are going to use doesn't already exist if (document.getElementById(this.movieName) !== null) { throw "ID " + this.movieName + " is already in use. The Flash Object could not be added"; } // Get the element where we will be placing the flash movie targetElement = document.getElementById(this.settings.button_placeholder_id) || this.settings.button_placeholder; if (targetElement == undefined) { throw "Could not find the placeholder element: " + this.settings.button_placeholder_id; } // Append the container and load the flash tempParent = document.createElement("div"); tempParent.innerHTML = this.getH5HTML(); // Using innerHTML is non-standard but the only sensible way to dynamically add Flash in IE (and maybe other browsers) targetElement.parentNode.replaceChild(tempParent.firstChild, targetElement); this.initFileElement(); // Fix IE Flash/Form bug if (window[this.movieName] == undefined && this.fileElement) { window[this.movieName] = this.fileElement; } } H5Upload.prototype.getH5HTML = function () { return [ '<div style="width:' + this.settings.button_width + 'px;height:' + this.settings.button_height + 'px;overflow:hidden;position:relative;">', '<div style="width:' + this.settings.button_width + 'px;height:' + this.settings.button_height + 'px;line-height:' + this.settings.button_height + 'px;text-align:center;' + this.settings.button_text_style + 'background:url(' + this.settings.button_image_url + ') center center no-repeat #1199ff;">', this.settings.button_text, '</div>', '<input type="file" id="' + this.movieName + '" ' + (this.customSettings.single ? '' :' multiple')+' accept="' + this.settings.file_types.replace(/;/g,',').replace(/\*/g,'') + '" style="position:absolute;left:0;top:0;opacity:0;height:' + this.settings.button_height + 'px">', '</div>' ].join(""); } H5Upload.prototype.initFileElement = function () { var self = this; if (this.fileElement == undefined) { this.fileElement = $('#' + this.movieName); this.fileElement.on('change', function (e) { self.onSelectFile(e) }); } if (this.fileElement === null) { throw "Could not find Upload element"; } return this.fileElement; } H5Upload.prototype.onSelectFile = function (e) { var files = this.fileElement[0].files; if (files.length > 0) { this.uploadNext(files, 0); } } H5Upload.prototype.uploadNext = function (files, idx) { var self = this if (files.length > idx) { this.uploadFile(files[idx], function () { self.uploadNext(files, idx + 1); }) } else { this.queueEvent('upload_complete_handler', [files]); } } H5Upload.prototype.uploadFile = function (file, uploadNext) { var self=this var options = { url: this.settings.upload_url, type: 'POST', dataType: 'json', success: function (json) { if (json.status == 1) { self.queueEvent('upload_success_handler', [file, json]); uploadNext(true, json) } else { self.queueEvent('upload_error_handler', [file, 1, json.msg]); uploadNext(false, json) } }, error: function (xhr) { self.queueEvent('upload_error_handler', [file]); uploadNext(false) } }; options.data = new FormData(); options.data.append('Filedata', file); options.cache = false; options.processData = false; options.contentType = false; options.xhr = function () { //アップロードの進行状況を表示するには var xhr = $.ajaxSettings.xhr(); if (xhr.upload) { xhr.upload.addEventListener('progress', function (event) { var percent = Math.floor(event.loaded / event.total * 100); self.queueEvent('upload_progress_handler', [file, event.loaded]); }, false); } return xhr; }; $.ajax(options); } // フラッシュメソッド呼び出しをブロックする H5Upload.prototype.callFlash = function (functionName, argumentArray) { console.log('call:' + functionName, argumentArray); return {}; } // SWFUpload からオーバーライドされていないメソッドを取得します for (var funcname in SWFUpload.prototype) { if (!H5Upload.prototype[funcname]) { H5Upload.prototype[funcname] = SWFUpload.prototype[funcname]; } } 新H5バージョンのファイルアップロード処理フローをupload.jspで初期化する, <script src="${base}/thirdparty/swfupload/h5upload.js" type="text/javascript"></script> var swfu window.onload=function() { //...code swfu=new H5Upload({ //....settings code }); } このアイデアは、フラッシュ コンポーネントを置き換えるファイル選択ボックスを作成し、ファイル選択イベントを監視し、ファイルを手動で取り出して非同期にアップロードすることで、基本的な単一ファイルおよび複数ファイルのアップロード、進行状況の表示、およびコールバックを実現することです。 文章导航 php の wordpress と tomcat 下の Java プラットフォーム Web サイトは、Apacheを共有します、単一サーバー、二重ドメイン名。