【发布时间】:2021-06-02 15:59:34
【问题描述】:
我有一个使用 html2canvas 从表格中截屏的按钮 然后获取它的dataurl并将其放在img元素src上 之后我想发送这张我放在 img 元素 src 上的图像,使用 ajax (为了获得更多帮助,我正在处理 sharepoint,我想从网格中获取屏幕截图并将其发送到库以保存此图片) 按钮点击js
window.take = function () {
alert('screen');
html2canvas(document.querySelector("#c_Grid1")).then(canvas => {
document.body.appendChild(canvas)
let pnGImage = convertCanvasToImage(canvas);
document.body.appendChild(pnGImage);
$("body").append( "<img id='screenshot' src='"+ pnGImage +"'>" );
SP.SOD.executeFunc('sp.js', 'SP.ClientContext', upFile);
});
}
take();
图片发送函数
function convertCanvasToImage(canvas) {
let image = new Image();
image.src = canvas.toDataURL();
return image;
}
var arrayBuffer;
var fileInput;
var attachmentFiles;
function upFile()
{
console.log('upFile');
//Get File Input Control and read th file name
var element = $("#screenshot");
img = element.attr('src');
if(element.length > 0){
var file = img
var fileName = "test.png";
//Read File contents using file reader
var reader = new FileReader();
reader.onload = function(e)
{
uploadFile(e.target.result, fileName);
}
reader.onerror = function(e)
{
alert(e.target.error);
}
reader.readAsArrayBuffer(file);
}
}
function tester(){
console.log('nothing')
}
function uploadFile(arrayBuffer, fileName)
{
console.log('uploadFile');
//Get Client Context,Web and List object.
var clientContext = new SP.ClientContext();
var oWeb = clientContext.get_web();
var oList = oWeb.get_lists().getByTitle('emailingdocument');
//Convert the file contents into base64 data
var bytes = new Uint8Array(arrayBuffer);
var i, length, out = '';
for (i = 0, length = bytes.length; i < length; i += 1)
{
out += String.fromCharCode(bytes[i]);
}
var base64 = btoa(out);
//Create FileCreationInformation object using the read file data
var createInfo = new SP.FileCreationInformation();
createInfo.set_content(base64);
createInfo.set_url(fileName);
//Add the file to the library
var uploadedDocument = oList.get_rootFolder().get_files().add(createInfo)
//Load client context and execcute the batch
clientContext.load(uploadedDocument);
clientContext.executeQueryAsync(QuerySuccess, QueryFailure);
}
function QuerySuccess()
{
console.log('File Uploaded Successfully.');
}
function QueryFailure(sender, args)
{
console.log('Request failed with error message - ' + args.get_message() + ' . Stack Trace - ' + args.get_stackTrace());
}
【问题讨论】:
标签: javascript jquery ajax sharepoint sharepoint-2013