Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript SharePoint 2013 online使用REST上载文件时是否可以设置其他列值?_Javascript_Sharepoint_Sharepoint Online_Csom_Sharepoint Object Model - Fatal编程技术网

Javascript SharePoint 2013 online使用REST上载文件时是否可以设置其他列值?

Javascript SharePoint 2013 online使用REST上载文件时是否可以设置其他列值?,javascript,sharepoint,sharepoint-online,csom,sharepoint-object-model,Javascript,Sharepoint,Sharepoint Online,Csom,Sharepoint Object Model,当我尝试将文件上载到SharePoint 2013 online时,下面的Javascript非常有效。然而,我一直在寻找一种在上传文件的同时填充文档库中另一列的方法,但没有成功。例如,名称为“doctype”的单行文本列。我尝试的一切似乎都与我的代码不兼容。有可能吗 这是我的密码: jQuery(document).ready(function () { $(".uploadFile").click(function () { fileID = $('#fileInput').attr

当我尝试将文件上载到SharePoint 2013 online时,下面的Javascript非常有效。然而,我一直在寻找一种在上传文件的同时填充文档库中另一列的方法,但没有成功。例如,名称为“doctype”的单行文本列。我尝试的一切似乎都与我的代码不兼容。有可能吗

这是我的密码:

jQuery(document).ready(function () {
$(".uploadFile").click(function () {
    fileID = $('#fileInput').attr('id');
    var selectedDocCat = $('#ddlCategory').val();
    var selectedDocType = $('#ddlType').val();
    document.getElementById("displayName").value = mainFolderUrlVal + "-" + 
selectedDocCat + '-' + selectedDocType;
    fileName = $('#displayName').val();
    var fileUploading = document.getElementById('fileInput');
    if (fileUploading.files.length === 0) {
        alert("Select a file and specify a filename!");
        return;
    }
    var parts = fileUploading.value.split("\\");
    var filename = parts[parts.length - 1];
    docTitle = parts[parts.length - 1];
    var fileExt = filename.split('.').pop();
    var file = fileUploading.files[0];
    newFileName = fileName + "." + fileExt;
    console.log('filename is: ' + filename);
    docCat = selectedDocCat;
    uploadItems(docCat);
});
});

function uploadItems(docUplCat) {
var getArrayBuffer = getFileBuffer();
getArrayBuffer.done(function (arrayBuffer) {
    var serverRelativeUrlToFolder = 'Files/' + mainFolderUrlVal + "/" + 
docUplCat;
    var siteUrl = _spPageContextInfo.webAbsoluteUrl;
    var docLibraryEndpoint = siteUrl + 
"/_api/web/getfolderbyserverrelativeurl('" + serverRelativeUrlToFolder + 
"')/files/add(overwrite=true,url='" + newFileName + "')";
    $.ajax({
        url: docLibraryEndpoint,
        type: "POST",
        binaryStringRequestBody: true,
        data: arrayBuffer,
        timeout: 1000000,
        processData: false,
        state: "Update",
        headers: {
            "Content-Type": "application/octet-stream",
            "accept": "application/json;odata=verbose",
            "X-RequestDigest": jQuery("#__REQUESTDIGEST").val()
        },
        success: function (file) {
            alert("File uploaded succesfully");
            window.frameElement.cancelPopUp(); return false;
        },
        error: function (data) {
            alert('Error: File did not upload Successfully');
        }
    });
});
}
function _arrayBufferToBase64(buffer) {
var binary = ''
var bytes = new Uint8Array(buffer)
var len = bytes.byteLength;
for (var i = 0; i < len; i++) {
    binary += String.fromCharCode(bytes[i])
}
return binary;
}
function getFileBuffer() {
var deferred = jQuery.Deferred();
var reader = new FileReader();
reader.onloadend = function (e) {
    deferred.resolve(e.target.result);
}
reader.onerror = function (e) {
    deferred.reject(e.target.error);
}
reader.readAsArrayBuffer($('#fileInput')[0].files[0]);
console.log('done: ' + reader);
return deferred.promise();
} 
jQuery(文档).ready(函数(){
$(“.uploadFile”)。单击(函数(){
fileID=$('#fileInput').attr('id');
var selectedDocCat=$('#ddlcontegory').val();
var selectedDocType=$('#ddlType').val();
document.getElementById(“displayName”).value=mainFolderUrlVal+“-”+
selectedDocCat+'-'+selectedDocType;
fileName=$('#displayName').val();
var fileupload=document.getElementById('fileInput');
if(fileUploading.files.length==0){
警报(“选择文件并指定文件名!”);
返回;
}
var parts=fileUploading.value.split(“\\”);
var filename=parts[parts.length-1];
docTitle=parts[parts.length-1];
var fileExt=filename.split('.').pop();
var file=fileupload.files[0];
newFileName=fileName+“+fileExt;
log('文件名为:'+文件名);
docCat=选择的docCat;
上传项目(docCat);
});
});
功能上载项(docUplCat){
var getArrayBuffer=getFileBuffer();
getArrayBuffer.done(函数(arrayBuffer){
var serverRelativeUrlToFolder='Files/'+mainFolderUrlVal+“/”+
DOCULPCAT;
var siteUrl=_spPageContextInfo.webAbsoluteUrl;
var docLibraryEndpoint=siteUrl+
“/_api/web/getfolderbyserverrelativeurl(“+serverRelativeUrlToFolder+
“)/files/add(overwrite=true,url=”+newFileName+“)”;
$.ajax({
url:docLibraryEndpoint,
类型:“POST”,
binaryStringRequestBody:true,
数据:arrayBuffer,
超时:1000000,
processData:false,
声明:“更新”,
标题:{
“内容类型”:“应用程序/八位字节流”,
“接受”:“application/json;odata=verbose”,
“X-RequestDigest”:jQuery(“#u-RequestDigest”).val()
},
成功:函数(文件){
警报(“文件上传成功”);
window.frameElement.cancelPopUp();返回false;
},
错误:函数(数据){
警报(“错误:文件未成功上载”);
}
});
});
}
函数_arrayBufferToBase64(缓冲区){
变量二进制=“”
var字节=新的Uint8Array(缓冲区)
var len=字节数。字节长度;
对于(变量i=0;i

任何帮助都将不胜感激,谢谢

基本上,您需要查询使用该文件创建的列表项,并更新其元数据。它将需要多个REST查询。

下面是一个关于如何做到这一点的示例。

baywet是正确的,您的上传方法也很好。或者,我喜欢直接使用CSOM。您可以使用上载附件

使用签入/签出更新库项元数据的示例:

using(ClientContext ctx = new ClientContext(siteUrl)) {
    SecureString passWord = new SecureString();
    foreach(char c in password)
    passWord.AppendChar(c);
    ctx.Credentials = new SharePointOnlineCredentials(username, passWord);

    Web web = ctx.Web;
    List list = web.Lists.GetByTitle(listName);
    var query = CamlQuery.CreateAllItemsQuery();
    var items = list.GetItems(query);
    ctx.Load(items);
    ctx.ExecuteQuery();

    foreach(var item in items) {
        item.File.CheckOut();
        item["Category"] = "My New Category";
        item["Title"] = "My New Title";
        item.Update();
        item.File.CheckIn("Updating Category and Title for list item", CheckinType.OverwriteCheckIn);
        ctx.ExecuteQuery();
    }
}