2012-04-13 75 views
1

我很難讓FileTransfer在Cordova 1.6.0中工作。我在早期版本中沒有嘗試過,所以我不知道這是否是一個新問題。xcode中的Cordova fileupload錯誤 - 「WebKit丟棄未捕獲的異常」

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) 

在我看來,當科爾多瓦exec函數是調用本地文件處理器的功能發生這種情況,但我不知道如何解釋這些錯誤信息。

我對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] 
); 
+0

你有過這種錯誤的任何運氣? – kim3er 2012-04-19 21:31:01

+0

不,我不得不使用另一種解決方案,最終根本不使用FileTransfer方法,而是使用jQuery ajax函數。 – axxxman 2012-04-23 08:03:01

回答

2

這是科爾多瓦1.6.x的一個bug這是由於在科爾多瓦1.7.0得到解決(https://issues.apache.org/JIRA /瀏覽/ 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 

豐富

0

貌似上傳的方法已經改變。我有一種被選擇後,將真正解決了類似的問題:

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

    imageURLToLocalFile, 
    urlToMyServiceEndpoint, 
    successhandler, 
    errorhandler, 
    options, 
    **true** 
); 
相關問題