错误:第一个参数必须是File或Blob对象

时间:2019-06-27 08:50:34

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

你好,我在选择图片时使用的是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);
          }
        );

Getting issue when select images

2 个答案:

答案 0 :(得分:0)

cordova文件实例与Twitter documentation不同,cordova创建类似于对象的文件,但与var url = 'https://api.twitter.com/1.1/users/search.json' var username = 'username' var q = '?q=' + username var response = service.fetch(url + q, { method: 'get', }); var result = JSON.parse(response.getContentText()); Logger.log(JSON.stringify(result, null, 2)); 不同,因为cuz compressorjs可能只具有File和Blob的知识,而不具有cordova文件的知识

window.File

  

此插件定义了全局cordova.file对象。

     

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

我对Cordova或Compressorjs知之甚少,但在我看来,您可以在something instanceOf File事件之后加载Compressorjs

答案 1 :(得分:0)

正如@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);