Question

J'utilise JSOM pour télécharger le document dans la bibliothèque. J'utilise ce JS:

var file;
var fileCreateInfo;
function CreateFile()
{
    // Ensure the HTML5 FileReader API is supported
    if (window.FileReader)
    {
        input = document.getElementById("fileinput");
        if (input)
        {
            file = input.files[0];
            fr = new FileReader();
            fr.onload = receivedBinary;
            fr.readAsDataURL(file);
        }
    }
    else
    {
        alert("The HTML5 FileSystem APIs are not fully supported in this browser.");
    }
}

// Callback function for onload event of FileReader
function receivedBinary()
{

    var clientContext = new SP.ClientContext('http://pk-sp:88//');
    this.oWebsite = clientContext.get_web();
    clientContext.load(this.oWebsite); 
    var list = this.oWebsite.get_lists().getByTitle("Documents"); 

    fileCreateInfo = new SP.FileCreationInformation();
    fileCreateInfo.set_url(file.name);
    fileCreateInfo.set_overwrite(true);
    fileCreateInfo.set_content(new SP.Base64EncodedByteArray());

    // Read the binary contents of the base 64 data URL into a Uint8Array
    // Append the contents of this array to the SP.FileCreationInformation
    var arr = convertDataURIToBinary(this.result);
    for (var i = 0; i < arr.length; ++i)
    {
        fileCreateInfo.get_content().append(arr[i]);
    }

    // Upload the file to the root folder of the document library
    this.newFile = list.get_rootFolder().get_files().add(fileCreateInfo);

    clientContext.load(this.newFile);
    clientContext.executeQueryAsync(onSuccess, onFailure);
}

function onSuccess()
{
    // File successfully uploaded
    alert("Success!");
}

function onFailure()
{
    // Error occurred
    alert("Request failed: " + arguments[1].get_message());
    console.log("Request failed: " + arguments[1].get_message());
}

// Utility function to remove base64 URL prefix and store base64-encoded string in a Uint8Array
// Courtesy: https://gist.github.com/borismus/1032746
function convertDataURIToBinary(dataURI)
{
    var BASE64_MARKER = ';base64,';
    var base64Index = dataURI.indexOf(BASE64_MARKER) + BASE64_MARKER.length;
    var base64 = dataURI.substring(base64Index);
    var raw = window.atob(base64);
    var rawLength = raw.length;
    var array = new Uint8Array(new ArrayBuffer(rawLength));

    for (i = 0; i < rawLength; i++)
    {
        array[i] = raw.charCodeAt(i);
    }
    return array;
}

Comment puis-je obtenir un identifiant de fichier téléchargé?

Je peux utiliser la bibliothèque SPServices pour obtenir le dernier identifiant ou trouver par titre. Mais je pense que la meilleure façon d'obtenir cet identifiant de l'objet FilecreateInfo.Est-ce possible?

merci!

Était-ce utile?

La solution

Vous pouvez obtenir l'identifiant de newfile, consultez sp.file.listitemallfield

Vous devrez inclure la propriété dans votre charge:

clientContext.load(newFile, 'ListItemAllFields');

Ensuite, vous pouvez accéder à l'ID avec:

newFile.get_listItemAllFields().get_id();

Licencié sous: CC-BY-SA avec attribution
Non affilié à sharepoint.stackexchange
scroll top