#c# #amazon-web-services #amazon-s3 #service #upload
#c# #amazon-веб-сервисы #amazon-s3 #Обслуживание #загрузка
Вопрос:
У меня есть служба Windows, которая отслеживает папку на наличие новых файлов, а затем отправляет в корзину S3 для обработки. Служба работает для первого файла, но затем я получаю это исключение для любых файлов после этого.
Сообщение: «Процесс не может получить доступ к файлу»C:PDFssample-2.pdf «потому что он используется другим процессом». при записи объекта
Вот часть кода для загрузки:
private static async Task UploadFileAsync()
{
try
{
var fileTransferUtility = new TransferUtility(s3Client);
//await fileTransferUtility.UploadAsync(filePath, bucketName);
Log.WriteLine("FilePath: " filePath);
using (var fileToUpload = new FileStream(filePath, FileMode.Open, FileAccess.Read))
{
await fileTransferUtility.UploadAsync(fileToUpload, bucketName, fileToUpload.Name);
}
Log.WriteLine("File uploaded: " filePath);
}
catch (AmazonS3Exception e)
{
Log.WriteLine("Error encountered on server. Message: '" e.Message "' when writing an object");
}
catch (Exception e)
{
Log.WriteLine("Unknown encountered on pc. Message: '" e.Message "' when writing an object");
}
}
Изначально у меня был установлен режим FileMode для чтения, а также для доступа к файлам для чтения.
Есть какие-либо подсказки?
Комментарии:
1. Достаточно ли времени вы ждете завершения записи файла sample-2.pdf, прежде чем забрать его? Например, загружаются ли PDF-файлы с FTP или сбрасываются туда другим процессом? Иногда для завершения загрузки файла требуется секунда или 2, и в течение этого времени он блокируется ОС.
2. @Джон Да, я ждал от нескольких минут до нескольких часов. Если я перезапущу службу, я смогу снова загрузить один файл. Я просто копирую и вставляю файл из одного каталога в отслеживаемый каталог.
3. Не должна ли эта строка быть fileToUpload = new FileStream(путь к файлу, FileMode. Открыть, FileAccess.Read)) ?
4. @Jon Это то, что у меня изначально было, и это не работает. Попробовал еще раз, чтобы быть уверенным.
5. @Jon Это работает, если я копирую несколько файлов одновременно. Проблема возникает по одному за раз.