【问题标题】:Error: The first argument must be a File or Blob object错误:第一个参数必须是 File 或 Blob 对象
【发布时间】:2019-06-27 22:11:02
【问题描述】:

你好我在选择图片时使用compressorjs插件然后问题是

https://www.npmjs.com/package/compressorjs

我的代码是:-

window.resolveLocalFileSystemURL(
          imageData,
          fileEntry => {
            fileEntry.file(file => {
              console.log(file);
              new Compressor(file, {
                quality: 0.6,
                success: result => {
                  console.log(result, result.size);
                },
                error: err => {
                  console.log(err);
                }
              });
            });
          },
          err => {
            console.log(err);
          }
        );

【问题讨论】:

  • 一个cordova文件实例与window.File不同

标签: javascript node.js angular cordova ionic-framework


【解决方案1】:

cordova File 实例与window.Filecordova 不同,它创建了一个类似对象的文件,但它与something instanceOf File 不同,因为compressorjs 可能只知道File 和Blob,而不知道cordova 文件。

https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-file/

这个插件定义了全局的cordova.file对象。

虽然在全局范围内,但直到 deviceready 事件之后才可用。

我对cordova或compressorjs了解不多,但听起来你可以在deviceready事件之后加载compressorjs

【讨论】:

    【解决方案2】:

    正如@endless 所说,您不能使用 cdvfile 路径,因为它是自定义文件路径处理程序,但是您可以将 cdvfile 路径更改为本机路径

    它位于文档 https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-file/ 的标题 Converting cdvfile:// to native path

    document.addEventListener("deviceready", function(){
        resolveLocalFileSystemURL('cdvfile://localhost/temporary/path/to/file.mp4', 
            function(entry) {
                var nativePath = entry.toURL();
                console.log('Native URI: ' + nativePath);
            }
        );
    
    }, false);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-04
      • 2018-01-05
      • 1970-01-01
      • 1970-01-01
      • 2021-05-15
      相关资源
      最近更新 更多