В настоящее время я работаю со службой Windows, которая перемещает файлы из определенных мест и синхронизирует их с библиотеками документов 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
.