我正在測驗將檔案上傳到 SharePoint 的能力。我正在使用以下代碼:
var targetSiteURL = @"https://company.sharepoint.com/sites/ProjectRoom";
var login = "[email protected]";
var password = "PWD123!";
var securePassword = new SecureString();
foreach (var c in password)
{
securePassword.AppendChar(c);
}
var ctx = new ClientContext(targetSiteURL)
{
Credentials = new SharePointOnlineCredentials(login, securePassword)
};
var fileName = vm.UploadedFile.FileName;
using (var target = new MemoryStream())
{
vm.UploadedFile.InputStream.CopyTo(target);
Microsoft.SharePoint.Client.File.SaveBinaryDirect(ctx, $"/sites/ProjectRoom/Project Room Test/{fileName}", target, true);
}
檔案以正確的名稱上傳到正確的位置。但是,該檔案是空白的。
UploadedFile 是我的 ViewModel 中的一個屬性 =>
public HttpPostedFileBase UploadedFile { get; set; }
我的表單中還有一個名為 UploadedFile 的檔案輸入型別,我用它來選擇要上傳的檔案 =>
<input type="file" name="UploadedFile" id="UploadedFile"/>
我的問題是:為什么我上傳的檔案是空白的?
uj5u.com熱心網友回復:
AMemoryStream有一個指向下一個要讀取的位元組的內部指標。在向其中插入位元組后,您需要將其重置回開始,否則消費應用程式可能不會意識到并將其讀取為空。要重置它,只需將Position屬性設定回零:
vm.UploadedFile.InputStream.CopyTo(target);
// Add this line:
target.Position = 0;
Microsoft.SharePoint.Client.File.SaveBinaryDirect(....);
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/417992.html
標籤:
