JSOM을 사용하여 업로드 한 후 파일 ID 가져 오기
-
10-12-2019 - |
문제
JSOM을 사용하여 문서를 라이브러리에 업로드합니다. 이 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;
}
.
업로드 된 파일의 ID를 어떻게 얻을 수 있습니까?
Spservices 라이브러리를 사용하여 마지막 ID를 얻거나 제목별로 찾을 수 있습니다. 그러나 나는 FileCreateInfo 객체 에서이 ID를 얻는 가장 좋은 방법이라고 생각합니다.그게 가능한가?
감사합니다!
해결책
NewFile에서 ID를 가져올 수 있습니다 sp.file.listitemallfields
로드에 속성을 포함시켜야합니다.
clientContext.load(newFile, 'ListItemAllFields');
.
다음으로 ID에 액세스 할 수 있습니다 :
newFile.get_listItemAllFields().get_id();
. 제휴하지 않습니다 sharepoint.stackexchange