我正在开发一个使用OneDrive API进行文件管理的Web项目。我想创建* .docx | * .pptx | * .xlsx文件,但不幸的是,OneDrive API都不支持创建空/新文件。我尝试的是将一个空/新文件从我的服务器上传到OneDrive。虽然上传工作正常,但该文件无法在Office Online或本地Office中打开。
从this blog,我可以生成Word文件并上传。
function createNewDoc(name) {
var htmlString = "<html><body></body></html>";
var byteNumbers = new Uint8Array(htmlString.length);
for (var i = 0; i < htmlString.length; i++) {
byteNumbers[i] = htmlString.charCodeAt(i);
}
var blob = new Blob([byteNumbers], {type: "text/html"});
socialAPI.uploadFile('windows', blob, 'name', 'folder.87ash7ashb7a2').then(function (resp) {
console.log("response for uploading file", resp);
})
}
此文件适用于Word。但是,该方法不适用于Excel和Powerpoint。
所以最终,我无法使用OneDrive API做任何事情。我开始查看Office 365 API,如果有什么允许创建上述文件,但我找不到类似的东西。 (P.S:我在看REST API)
我注意到的另一件事是Box能够做同样的事情并在窗口中打开它,但是网址的格式为https://app.box.com/services/box_for_office_online。 Box是否与微软有一些特殊的合作来提供这样的服务?
答案 0 :(得分:1)
&#34;空&#34; Office文件实际上不是0字节文件。桌面Office应用程序(Excel除外)能够获取0字节文件并使其成为Office文档(插入&#34;模板&#34;使文件成为Office文件)。目前,在线Office应用程序不支持这样做。
由于目前没有API来创建特定类型的新文件,因此您需要解决它。为此,您需要存储并上传&#34;模板&#34; Word,Excel和PowerPoint的文件。您提供的示例是为Word执行此操作的一种方法,您在其中创建了一个空的HTML页面并将其上传。
对于Excel和PowerPoint,您需要通过创建一个空文件并将其作为&#34; new&#34;上传来执行类似操作。每当您的应用想要创建新的空文件时提交文件。但是,您无需将简单的HTML字符串存储为模板文件内容,而是需要新文件的实际二进制内容,具体取决于类型,最高可达~30kb。
我们正在努力改进Web应用程序,以便他们可以获取0字节文件和#34;转换&#34;它变成了一个新文档,但今天仍然是一个bug。