我目前正在使用Windows服務,該服務可以移動某些位置的文件並使其與SharePoint文檔庫保持同步。將文件流式傳輸到外部SharePoint時的上次修改屬性
上傳/同步/等功能表現良好,但我有文件屬性的問題。上傳時(下面的代碼示例)文件LastModified屬性設置爲文件上傳時間。如果我直接將文件複製/粘貼到目錄,情況並非如此。
我已經研究過一旦它上傳但只是改變屬性的可能性,但這並不理想。從測試看來,這似乎是由於流被「構建」爲另一端的新文件造成的?有沒有辦法發送文件的文件屬性?
public static string UploadFile(string destUrl, string sourcePath, CredentialCache cc)
{
try
{
Uri destUri = new Uri(destUrl);
FileStream inStream = File.OpenRead(sourcePath);
WebRequest req = WebRequest.Create(destUri);
req.Method = "PUT";
req.Headers.Add("Overwrite", "F");
req.Timeout = System.Threading.Timeout.Infinite;
req.Credentials = cc;
Stream outStream = req.GetRequestStream();
byte[] buffer = new byte[32768];
int read;
while ((read = inStream.Read(buffer, 0, buffer.Length)) > 0)
{
outStream.Write(buffer, 0, read);
}
outStream.Flush();
outStream.Close();
inStream.Flush();
inStream.Close();
WebResponse ores = req.GetResponse();
ores.Close();
return "success";
} //End Try for Try/Catch of UploadFile()
catch (Exception ex)
{
return ex.Message;
} //End Try/Catch for UploadFile()
} //End UploadFile()
編輯 - 其他信息
總之我留在下面的答案註釋:
,因爲我張貼SharePoint列表中的信息作爲新的問題,我也注意到,即使如果你直接複製它,因爲它基於數據庫信息(我相信?)。我已經看過File.SetLastWriteTime
,但似乎SharePoint不喜歡我碰觸東西。
我也嘗試使用SharePoint調用來設置特性和上傳文件,但自從發佈到外部SharePoint實例後,我無法驗證身份,除非我執行WebRequest
路由。
感謝您的答覆。這證實了我對時間戳的想法。我也注意到,自從我發佈了Sharepoint將信息列爲新的問題,即使您直接複製它,因爲它基於數據庫信息。我查看了File.SetLastWriteTime,但似乎SharePoint不喜歡我觸摸事物。 (編輯我的問題以獲取附加信息) – sealz
您可以手動循環Sharepoint上的文件並設置屬性。我會更新我的帖子以反映這一點。 –
謝謝。循環播放SP文件的問題是我無法進行身份驗證,因爲我正在外部同步文件。除非有一種我忽略的方式,否則我似乎無法使用SP調用進行身份驗證。 – sealz