1

FileTransfer を Cordova 1.6.0 で動作させるのに苦労しています。以前のバージョンでは試していないので、これが新しい問題かどうかはわかりません。

var options = new FileUploadOptions();
options.fileKey = "file";

var ft = new FileTransfer();
ft.upload( 
    imageURLToLocalFile, 
    urlToMyServiceEndpoint, 
    successhandler,
    errorhandler,
    options
);

Xcodeコンソールに表示されます。

*** WebKit discarded an uncaught exception in the
webView:decidePolicyForNavigationAction:request:frame:decisionListener: 
delegate: <NSRangeException> ***
 -[JKArray objectAtIndex:]: index (1) beyond bounds (1)

Cordova exec 関数がネイティブの Filehandler 関数を呼び出しているときにこれが発生するように思えますが、エラー メッセージを解釈する方法がわかりません。

エラーを作成する呼び出し、Cordova ファイルの FileTransfer.prototype.upload 関数について少し疑問があります。私は1.6.0バージョンです:

exec(
    successCallback, 
    errorCallback, 
    'FileTransfer', 
    'upload', 
    [filePath, server, fileKey, fileName, mimeType, params, trustAllHosts, chunkedMode]
);

古い 1.5.0 バージョンは次のとおりです。

Cordova.exec(
    successCallback,
    errorCallback,
    'org.apache.cordova.filetransfer', 
    'upload', 
    [options]
);
4

2 に答える 2

2

これは Cordova 1.6.x のバグで、Cordova 1.7.0 で解決される予定です (https://issues.apache.org/jira/browse/CB-543)。

回避策は、すべてのオプション (fileName、fileKey など) を手動で指定することです。これは、フレームワークがそれらを必須として誤って扱っているためです。

そう:

var options = new FileUploadOptions();
options.fileKey = "file";

なる:

var options = new FileUploadOptions();
options.fileKey = "file";
options.fileName = "image.jpg";
options.mimeType = "image/jpeg";
options.chunkedMode = true;
options.params = {}; // This line is untested as I have actual params

リッチ

于 2012-04-20T05:01:29.963 に答える
0

アップロード方法が変わったようです。オプションの後にtrueを追加することで解決された同様の問題がありました:

var ft = new FileTransfer();
ft.upload(

  imageURLToLocalFile, 
  urlToMyServiceEndpoint, 
  successhandler,
  errorhandler,
  options,
  **true**
);
于 2012-04-16T07:46:36.840 に答える