通过JavaScript /网络应用程序在设备上指挥OneDrive

问题描述:

是否可以从网站上将OneDrive导入用户设备(iPad)以捕获照片并将其存储在特定文件夹中?是否可以将OneDrive引导到用户的设备上以相同的方式创建文件夹?通过JavaScript /网络应用程序在设备上指挥OneDrive

用例基本上我们希望Web应用程序控制工作流程,但将照片捕获和异步上传的照片外包给OneDrive。但是我们知道照片的位置以及它们的名称,因此我们可以在他们完成上传并在云中提供后,将它们下载到我们的服务器上。

+0

所以你想用iPad的相机拍摄一张照片,并希望把它上传到一个驱动器。你想要吗? – arunjos007

+0

这可能是不可行的,因为它是一个跨浏览器/设备的想法,但离线HTML5应用程序和增加浏览器对设备服务(相机,地理定位)的支持,我想我会问。我想要做的是使用网络浏览器来请求拍摄并存储在设备上的照片,并且设备上的OneDrive负责将设备上的文件同步到云端,并将其转换为网站知晓的OneDrive文件夹。 – Dave

对于从手机访问手机的摄像头,你可以使用输入标签如下:

<input type="file" accept="image/*" capture="camera"> 

现在要上传的文件,你可以使用OneDrive JS SDK是这样的:

<script type="text/javascript" src="https://js.live.net/v7.2/OneDrive.js"></script> 
<script type="text/javascript"> 
    function launchSaveToOneDrive() { 
    var odOptions = { /* ... specify the desired options ... */ }; 
    OneDrive.save(odOptions); 
    } 
</script> 
<input type="file" id="fileUploadControl" name="fileUploadControl" accept="image/*" capture="camera"> 

<button onclick="launchSaveToOneDrive">Save to OneDrive</button> 

其中odOptions会看起来像这样:

var odOptions = { 
    clientId: "INSERT-APP-ID-HERE", 
    action: "save", 
    sourceInputElementId: "fileUploadControl", 
    sourceUri: "", 
    fileName: "file.txt", 
    openInNewWindow: true, 
    advanced: {}, 
    success: function(files) { /* success handler */ }, 
    progress: function(p) { /* progress handler */ }, 
    cancel: function() { /* cancel handler */ }, 
    error: function(e) { /* error handler */ } 
} 

您的成功将回应将具有OneDriv的URL上传的文件将作为参数传递给成功回调。

{ 
    "value": [ 
    { 
     "id": "123456", 
     "name": "document1.docx", 
     "size": 12340, 
     "@content.downloadUrl": "https://contoso-my.sharepoint.com/download.aspx?guid=1231231231a", 
     "webUrl": "https://cotoso-my.sharepoint.com/personal/user_contoso_com/documents/document1.docx", 
     "thumbnails": [ 
     { 
      "id": "0", 
      "small": { "url": "https://sn3302files.onedrive.live.com/..." }, 
      "medium": { "url": "https://sn3302files.onedrive.live.com/..." }, 
      "large": { "url": "https://sn3302files.onedrive.live.com/..." } 
     } 
     ] 
    } 
    ] 
} 

更多请见:https://docs.microsoft.com/en-us/onedrive/developer/controls/file-pickers/js-v72/save-file

+0

嗨,这个解决方案使用网站上传文件。我希望将该责任转移到用户手机上的OneDrive(例如Dropbox的相机上传)。这样用户就可以拍照并且网站知道在OneDrive上的位置(一旦上传),但用户可以关闭网站,并且上传将由OneDrive在设备上在后台完成。 – Dave