【问题标题】:Worklight 6.2 FileUploadOptions is not definedWorklight 6.2 FileUploadOptions 未定义
【发布时间】:2014-09-12 10:59:34
【问题描述】:

我正在使用 Worklight 6.2,并且我正在尝试将摄像头中的图像上传到具有 android 4.0.3 的 Android 设备上,但每当我运行此代码时,它都不会完成上传。

代码如下:

function sendReportImage(reportID){
    WL.Logger.debug("Submitting report image: " + imageURI);

var options = new FileUploadOptions();

options.fileKey="file"; 
options.fileName=imageURI.substr(imageURI.lastIndexOf('/')+1);
options.mimeType="image/jpeg";
options.chunkedMode=false;

WL.Logger.debug("options" + options);

var ft = new FileTransfer();
ft.upload(imageURI, encodeURI(host + "/reports/"+reportID+"/contents"), imageUploadSuccess, imageUploadFail, options);

但它甚至没有到达 FileTransfer 行,它在 FileUploadOptions 上停止,显示以下日志:

07-21 19:34:43.835: D/CordovaLog(6185):          file:///data/data/com.my_program/files/www/default/worklight/cordova.js: Line 1036 : processMessage failed: Message: S01 StoragePlugin137844502 n1
07-21 19:34:43.835: I/Web Console(6185): processMessage failed: Message: S01 StoragePlugin137844502 n1 at file:///data/data/com.my_program/files/www/default/worklight/cordova.js:1036
07-21 19:34:43.867: D/CordovaLog(6185): file:///data/data/com.my_program/files/www/default/worklight/cordova.js: Line 1037 : processMessage failed: Error: ReferenceError: FileUploadOptions is not defined
07-21 19:34:43.867: I/Web Console(6185): processMessage failed: Error: ReferenceError: FileUploadOptions is not defined at file:///data/data/com.my_program/files/www/default/worklight/cordova.js:1037
07-21 19:34:43.898: D/dalvikvm(6185): GC_CONCURRENT freed 147K, 48% free 7679K/14535K, paused 2ms+3ms
07-21 19:34:43.898: D/CordovaLog(6185): file:///data/data/com.my_program/files/www/default/worklight/cordova.js: Line 1038 : processMessage failed: Stack: ReferenceError: FileUploadOptions is not defined
07-21 19:34:43.898: D/CordovaLog(6185):     at sendReportImage (file:///data/data/com.my_program/files/www/default/js/report.js:206:2)
07-21 19:34:43.898: D/CordovaLog(6185):     at Object.<anonymous> (file:///data/data/com.my_program/files/www/default/js/report.js:181:5)
07-21 19:34:43.898: D/CordovaLog(6185):     at Object.<anonymous> (file:///data/data/com.my_program/files/www/default/worklight/wljq.js:1202:33)
07-21 19:34:43.898: D/CordovaLog(6185):     at file:///data/data/com.my_program/files/www/default/worklight/wljq.js:1047:30
07-21 19:34:43.898: D/CordovaLog(6185):     at Object.resolveWith (file:///data/data/com.my_program/files/www/default/worklight/wljq.js:1158:7)
07-21 19:34:43.898: D/CordovaLog(6185):     at Object.resolve (file:///data/data/com.my_program/files/www/default/worklight/wljq.js:1247:33)
07-21 19:34:43.898: D/CordovaLog(6185):     at Object.<anonymous> (file:///data/data/com.my_program/files/www/default/worklight/jsonstore.js:4007:28)
07-21 19:34:43.898: D/CordovaLog(6185):     at Object.<anonymous> (file:///data/data/com.my_program/files/www/default/worklight/wljq.js:1202:33)
07-21 19:34:43.898: D/CordovaLog(6185):     at file:///data/data/com.my_program/files/www/default/worklight/wljq.js:1047:30
07-21 19:34:43.898: D/CordovaLog(6185):     at Object.resolveWith (file:///data/data/com.my_program/files/www/default/worklight/wljq.js:1158:7)
07-21 19:34:43.898: I/Web Console(6185): processMessage failed: Stack: ReferenceError: FileUploadOptions is not defined
07-21 19:34:43.898: I/Web Console(6185):     at sendReportImage (file:///data/data/com.my_program/files/www/default/js/report.js:206:2)
07-21 19:34:43.898: I/Web Console(6185):     at Object.<anonymous> (file:///data/data/com.my_program/files/www/default/js/report.js:181:5)
07-21 19:34:43.898: I/Web Console(6185):     at Object.<anonymous> (file:///data/data/com.my_program/files/www/default/worklight/wljq.js:1202:33)
07-21 19:34:43.898: I/Web Console(6185):     at file:///data/data/com.my_program/files/www/default/worklight/wljq.js:1047:30
07-21 19:34:43.898: I/Web Console(6185):     at Object.resolveWith (file:///data/data/com.my_program/files/www/default/worklight/wljq.js:1158:7)
07-21 19:34:43.898: I/Web Console(6185):     at Object.resolve (file:///data/data/com.my_program/files/www/default/worklight/wljq.js:1247:33)
07-21 19:34:43.898: I/Web Console(6185):     at Object.<anonymous> (file:///data/data/com.my_program/files/www/default/worklight/jsonstore.js:4007:28)
07-21 19:34:43.898: I/Web Console(6185):     at Object.<anonymous> (file:///data/data/com.my_program/files/www/default/worklight/wljq.js:1202:33)
07-21 19:34:43.898: I/Web Console(6185):     at file:///data/data/com.my_program/files/www/default/worklight/wljq.js:1047:30
07-21 19:34:43.898: I/Web Console(6185):     at Object.resolveWith (file:///data/data/com.my_program/files/www/default/worklight/wljq.js:1158:7) at file:///data/data/com.my_program/files/www/default/worklight/cordova.js:1038

任何提示如何解决它?

【问题讨论】:

  • assets文件夹下是否有如下文件? AndroidProject/assets/www/default/worklight/plugins/org.apache.cordova.file/www/FileUploadOptions.js 另外,这是在 6.2 中创建的新应用程序,还是从以前的 Worklight 版本升级?
  • 不,没有这样的文件。它已升级。

标签: android cordova ibm-mobilefirst


【解决方案1】:

现在它正在工作,这是我必须做的:

在生成的Android项目中找到“assets/www/default/plugins/org.apache.cordova.file/www/FileUploadOptions.js”文件并打开。 在“FileUploadOptions.js”文件的顶部有这样的代码:

cordova.define("org.apache.cordova.file.FileUploadOptions1", function(require, exports, module) {

把这段代码改成如下:

cordova.define("org.apache.cordova.file.FileUploadOptions", function(require, exports, module) {

保存文件并选择“运行方式 > Android 应用程序”。现在没有错误。

【讨论】:

  • 这只是一种解决方法,因为下次您将在 Worklight Studio 中构建您的项目时 - 您编辑的文件将恢复到原来的样子,但会出现错误。如果您是 IBM 客户,则需要打开 PMR 才能获得固定版本。我已经针对这个问题打开了一个缺陷,感谢您进行更深入的调查。
【解决方案2】:

请尝试以下操作:在您生成的 Android 项目中,在 assets\www\default\worklight\cordova_plugins.js 下,查找并替换:

- "file": "plugins/org.apache.cordova.file/www/FileUploadOptions.js",
+ "file": "plugins/org.apache.cordova.file/www/fileuploadoptions.js",

另外,
看到这个问答:IBM Worklight 6.2 - error on StoragePlugin

存储插件的声明存在一个已知缺陷,这可能是这里的根本原因。 作为一种解决方法,您需要打开 config.xml 并进行如下修改:

- com.worklight.androidgap.plugin.storage.StoragePlugin
+ com.worklight.androidgap.plugin.StoragePlugin

请让我们知道上述哪一项(可能两者都是必需的)是否对您有帮助。
如果您是 IBM 客户或业务合作伙伴,则需要打开 PMR 以接收包含此问题修复程序的 iFix。

【讨论】:

  • StoragePlugin 部分已完成,但在 assets\www 下我只找到一个名为“resources.zip.unencrypted.001”的文件。没有“默认”文件夹。
  • 听起来您在 application-descriptor.xml 中使用了加密 Web 资源选项;您将无法访问默认文件夹,因为您已对其进行了加密。
  • 在application-descriptor.xml这个选项是这样的:这个文件夹只在我的iphone环境下。
  • 我在这里看不到这个;使用新项目和应用程序重试。
  • 好吧,我又做了Android环境,现在文件夹就在那里。我替换了你所说的,但仍然无法在这里工作。它一直说 FileUploadOptions 未在 cordova.js 上定义。
猜你喜欢
  • 2016-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多