Я видел здесь несколько похожих вопросов, поскольку последние 2 часа я провел в поисковой системе, и все их принятые ответы кажутся одинаковыми - что в опубликованном коде отсутствует строка contenttype = "application/pdf"
.
Но, как вы можете видеть, у меня есть эта строка (была программно закодирована, теперь жестко закодирована, чтобы убедиться), но проблема все еще есть.
Проблема в том, что я могу загружать файлы jpg и png в Azure хранилище, и он отлично работает. Однако файлы pdf загружаются без ошибок, но когда я нажимаю на них в Azure Storage Explorer (включая нажатие кнопки «Загрузить»), открывается новая вкладка, но она пуста.
Может ли кто-нибудь увидеть, что я делаете что-то неправильно?
Заранее спасибо.
public async Task<string> BlobStorageUploadFromFile(string filename)
{
string storageConnection = "[Connection String is Here]";
CloudStorageAccount cloudStorageAccount = CloudStorageAccount.Parse(storageConnection);
//Create a blob client
CloudBlobClient cloudBlobClient = cloudStorageAccount.CreateCloudBlobClient();
//Create a container
CloudBlobContainer cloudBlobContainer = cloudBlobClient.GetContainerReference("attachments");
//Create Adhoc security policy - (Create permissions with 1hr expiry)
SharedAccessBlobPolicy adHocPolicy = new SharedAccessBlobPolicy()
{
SharedAccessExpiryTime = DateTime.UtcNow.AddHours(1),
Permissions = SharedAccessBlobPermissions.Create
};
// Generate the shared access signature for the container, setting the constraints directly on the signature.
string sasContainerToken = cloudBlobContainer.GetSharedAccessSignature(adHocPolicy, null);
//Fetch the container again using the containerURI with the secure token on the end
CloudBlobContainer cloudBlobContainer2 = new CloudBlobContainer(new Uri(cloudBlobContainer.Uri + sasContainerToken));
//Get Blob reference
CloudBlockBlob cloudBlockBlob = cloudBlobContainer2.GetBlockBlobReference(filename);
cloudBlockBlob.Properties.ContentType = "application/pdf"; // GetMimeTypeFromURL(filename);
using var fs = new FileStream(filename, FileMode.Open, FileAccess.Read);
using var sr = new StreamReader(fs, Encoding.UTF8);
//Upload to Azure
await cloudBlockBlob.UploadFromStreamAsync(sr.BaseStream);
//This returns the URI but cannot open if PDF
return cloudBlockBlob.Uri.ToString();
}
не удается открыть PDF-файлы 1