仅通过第二次单击即可使用JQuery和SharePointPlus js lib上传到SharePoint库的文件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了仅通过第二次单击即可使用JQuery和SharePointPlus js lib上传到SharePoint库的文件相关的知识,希望对你有一定的参考价值。
我正在使用SharepointPlus 5.2 js库的createFile()
方法将文件上传到SharePoint 2013库。它可以在大多数SP库上完美运行。但是在新创建的SP库上,第一次单击时会引发错误(需要文件内容),然后在第二次单击时进行正确的上载。如何解决这个问题?
标题部分包括:
<script type="text/javascript" src="/_layouts/15/MicrosoftAjax.js"></script>
<script type="text/javascript" src="/_layouts/15/sp.runtime.js"></script>
<script type="text/javascript" src="/_layouts/15/sp.js"></script>
<script type="text/javascript" src="/_layouts/15/init.js"></script>
<script type="text/javascript" src="/_layouts/15/core.js"></script>
<script type="text/javascript" src="/_layouts/15/1049/strings.js"></script>
<script type="text/javascript" src="/_layouts/15/sp.ui.dialog.js"></script>
<script type="text/javascript" src="/SiteAssets/_js/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="/SiteAssets/_js/bootstrap.min.js"></script>
<script type="text/javascript" src="/SiteAssets/_js/sharepointplus-5.2.min.js"></script>
html正文:
<div data-role="form" class="container form">
<div data-field="Title">
<label class="form_label required">Title:</label><br>
<input class="form_field required" value=""></input>
</div>
<div id="fileUploadControl" >
<label class="form_label required">Document selection:</label><br/>
<input id="fileUploadInput" class="form_field" type="file"/>
</div>
<hr>
<div class="btn_panel">
<input type="button" class="btn" id="save_btn" name="Save" value="Save" onclick="_uploadFile();">
<input type="button" class="btn" id="cancel_btn" name="Cancel" value="Cancel">
</div>
</div>
JS功能:
function _uploadFile() {
var Title = $('div[data-field="Title"] input').val();
var files = document.querySelector('#fileUploadInput').files;
files = Array.prototype.slice.call(files);
// read the files
Promise.all(files.map(function(file) {
return new Promise(function(prom_res, prom_rej) {
// use fileReader
var fileReader = new FileReader();
fileReader.onloadend = function(e) {
file.content = e.target.result;
prom_res(file);
}
fileReader.onerror = function(e) {
prom_rej(e.target.error);
}
fileReader.readAsArrayBuffer(file);
});
})).then(function(files) {
// upload files
return Promise.all(files.map(function(file) {
return $SP().list("8D5132D2-A458-4961-BCD6-FFD9CE964C0F").createFile({ //Doc lib UID
content:file.content,
filename:file.name,
fields:{
"Title":Title
}
});
}))
}).then(function(file) {
alert(file[0].Name+" has been uploaded");
console.log("Document " + file[0].Name+" has been uploaded to the Outgoing documents library");
}, function(error) {
console.log("Error: ",error);
});
}
Firefox控制台中的错误是
未捕获的例外:[SharepointPlus'createFile']:文件内容是必需的。
调试文件对象的内容表明它存在(显示字节大小)。错误处理程序不返回错误文本消息。在第二次单击相同的表单(不刷新页面)时,将上载文件并给出成功消息。如果遇到SharePoint,JQuery或SharepointPlus问题,或者遇到一些冲突,我会陷入困境。通常,第一次单击就可以上传文件,因为相同的代码可以在其他现有库上使用。
答案
问题已解决。实际上,问题不在代码中,它可以正常工作,但在页面iself中。尽管我包括所有SP依赖项,但只有将代码放入SP本机页面时,该代码才起作用。
以上是关于仅通过第二次单击即可使用JQuery和SharePointPlus js lib上传到SharePoint库的文件的主要内容,如果未能解决你的问题,请参考以下文章