【发布时间】:2015-02-10 21:39:34
【问题描述】:
可以使用 WL.upload 在 onedrive(skydrive) 中上传多个文件吗?我尝试了一些东西,但我总是得到一个错误,比如“元素必须是 html 输入元素”或类似的东西。我使用 onedrive sdk 5.6,应用程序是在 ASP.NET MVC 5 中构建的。问题是我创建了一个 type="file" 的输入,并设置了多个属性,因此我可以从我的计算机中选择多个文件,但上传方法来自WL api 请求一个元素属性,该属性实际上是 type="file" 的输入元素的 id。因为我的输入设置为多个,所以我尝试遍历包含的文件并创建一个输入元素以传递给该方法,但它不起作用,因为出于安全原因,我可以设置输入元素的值。
那么,有人知道我该怎么做吗?谢谢
这是我尝试过的:
<div id="save-to-skydrive-dialog-content-multiple">
<p>select a file</p>
<form enctype='multipart/form-data' method='POST'>
<input id="save-to-skydrive-file-input-multiple" type="file" name="files[]" multiple />
</form>
<p>upload file</p>
<button id="save-to-skydrive-upload-multiple-button">upload multiple</button>
</div>
function saveMultipleToSkyDrive() {
WL.fileDialog({
mode: 'save'
}).then(function (response) {
var folder = response.data.folders[0];
var elements = document.getElementById("save-to-skydrive-file-input-multiple").files;
for (var i = 0; i < elements.length; i++) {
var htmlInPutElement = document.createElement('input');
htmlInPutElement.setAttribute('type', 'file');
htmlInPutElement.value = elements.item(i);
WL.api({
})
WL.upload({
path: folder.id,
element: htmlInPutElement,
overwrite: 'rename'
}).then(function (response) {
log("You save to" + response.source + ". " + "Below is the result of the upload");
log("");
log(JSON.stringify(response));
},
function (errorResponse) {
log("WL.upload errorResponse = " + JSON.stringify(errorResponse));
},
function (progress) {
});
}
}, function (errorResponse) {
log("WL.upload errorResponse = " + JSON.stringify(errorResponse));
}
);
谢谢。
【问题讨论】:
-
我更新了问题。
标签: javascript asp.net-mvc-4 onedrive