将所需文件转换为在inkblob中包含它的mimetype

时间:2014-04-28 07:44:23

标签: filepicker.io

我正在使用File Picker来处理我的Web应用程序的文件。在我的前端应用程序中,我有文件句柄的URL(例如https://www.filepicker.io/api/file/H7KYuWy1S3e1qvG2M66i),但我没有完整的inkBlob。

该文件是图像,我想对此文件进行转换操作。在调用convert函数时,我似乎需要包含mimetype。

取自文件选择器的API documentation on convert,这有效:

var inkblob = {
    url: 'https://www.filepicker.io/api/file/H7KYuWy1S3e1qvG2M66i',
    filename: 'customers.jpg', mimetype: 'image/jpeg',
    isWriteable: false, size: 629454
};

var result = document.getElementById("convert-result");
filepicker.convert(inkblob, {width: 200, height: 200},
    function(new_InkBlob){
        console.log(new_InkBlob.url);
        result.src = new_InkBlob.url;
    }
);

相同的代码适用于这样的墨迹:

var inkblob = {
    url: 'https://www.filepicker.io/api/file/H7KYuWy1S3e1qvG2M66i',
    mimetype: 'image/jpeg',
};

但是,如果您排除mimetype并且仅包含url,则转换不起作用。

在我的情况下,它要求我先对文件句柄进行一次stat调用,从File Picker的API中检索mimetype,然后在执行convert命令时将mimetype发送回filepicker。

是否有可能使mimetype省略,如果转换命令中没有包含mimetype,文件选择器会在内部查找?

2 个答案:

答案 0 :(得分:0)

对于convert()方法,mimetype只是一个安全检查,以确保您传递图像。如果你传递'image / jpeg',即使它不是图像的正确mimetype,它应该工作得很好。所以每次都不需要stat文件。

答案 1 :(得分:0)

对于想要回答这个问题的其他人,以下是我们通过邮件传达的更多信息:

他们给邮件的答案:

  

对于convert()方法,mimetype只是一个安全检查,以确保您   传递图像。如果你传递'image / jpeg',即使它不正确   图像的mimetype,它应该工作得很好。所以不需要统计   每次都提交。

我的回答:

  

嗨,谢谢你的回答。

     

听起来像是在调用mimetype时包含了mimetype   convert()函数是多余的。你告诉我,我应该能够   简单地传入一个固定的mimetype,因此我看不出它是如何有用的   安全检查。如果要确保执行convert命令   在图像文件选择器已经知道文件具有哪种mimetype和我   相信这应该在convert()命令时在内部处理   执行不信任客户端对文件的mimetype的声明。

     

我没试过这个;但如果我使用转换命令会发生什么   mimetype在文本文件中设置为'image / jpeg'?我想它会失败   这是我想到这个mimetype要求的另一个原因   convert命令已过时。

来自filepicker的回答:

  

这实际上只是对意外传递文件的基本保护   除了图像到转换调用。我知道这可能是多余的   对你而言,它在95%的情况下有效,我们从来没有遇到过这个问题。