1

xcodeを使用してmac osでphonegapプロジェクトを開発しています。xcode で cordova ベースのアプリケーションを作成すると、cordova-1.6.0.js が自動的に作成されます。サーバーにsvgファイルを送信するためにfileuploadプラグインを使用しています。fileupload.js で、次のようにアラート fileuplaoder 関数を記述しました。

 var FileUploader = function() { 
    alert("gi");
}

このアラートは機能していますが、アップロード機能の下でアラートを出すと、

FileUploader.prototype.upload = function(server, file, params, fileKey, fileName, mimeType, success, fail, progress) {
    alert("upload");
    this._doUpload('upload', server, file, params, fileKey, fileName, mimeType, success, fail, progress);
};

このアラートは機能していません。HTMLページでのこのプラグインの私の呼び出しは、

window.plugins.fileUploader.upload('http:192.168.1.54:8080/downloadFiles', '/Users/User/Library/Application Support/iPhone Simulator/5.0/Applications/408DBBC7-67F7-4E8B-B41C-663CDC0377B5/Documents/image5_1.jpg.txt.svg', {foo: 'bar'}, 'myPhoto', 'image5_1.jpg.txt.svg', 'image/svg', 
                                                function(result) {
                                                console.log('Done: ' + result);
                                                }, 
                                                function(result) {
                                                console.log("Error: " + result);
                                                }, 
                                                function(loaded, total) {
                                                var percent = 100 / total * loaded;
                                                console.log('Uploaded  ' + percent);

                                                }
                                                );

fileupload.js には cordova.addConstructor メソッドがあります。しかし、生成された cordova.1.6.0.js ファイルにはそのような方法はありません。何が起こっているのかわかりません。このプラグインの作業を手伝ってください。

4

1 に答える 1

0

私は解決策を見つけました。コルドバ ファイル API 自体にアップロードとダウンロードのオプションがあります。その正常に動作します。コードは、

document.addEventListener("deviceready", onDeviceReady, false);

            // Cordova is ready
            //
            function onDeviceReady() {
                window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail);
            }

            function gotFS(fileSystem) {
                fileSystem.root.getFile("image5_2.jpg.svg", {create: true, exclusive: false}, gotFileEntry, fail);
            }

            function gotFileEntry(fileEntry) {
                var localpath=fileEntry.fullPath;
                uploadPhoto(localpath);
                //fileEntry.createWriter(gotFileWriter, fail);
            }

            function uploadPhoto(imageURI) {
                alert(imageURI);
                var options = new FileUploadOptions();
                options.fileKey="file";
                options.fileName="image5_2.jpg.svg";
                options.mimeType="image/svg+xml";

                var params = new Object();
                params.value1 = "test";
                params.value2 = "param";

                options.params = params;

                var ft = new FileTransfer();
                ft.upload(imageURI, "http://192.168.1.54:8080/POC/fileUploader", win, fail, options);
            }

            function win(r) {
                console.log("Code = " + r.responseCode);
                console.log("Response = " + r.response);
                console.log("Sent = " + r.bytesSent);
            }

            function fail(error) {
                alert("An error has occurred: Code = " + error.code);
                console.log("upload error source " + error.source);
                console.log("upload error target " + error.target);
            }

これを使ってください。

于 2012-06-16T09:46:04.903 に答える