gpt4 book ai didi

c# - 移动到 blob 存储后文件内容被重写

转载 作者:行者123 更新时间:2023-12-03 05:54:08 25 4
gpt4 key购买 nike

过去几天我一直在尝试使用 Azure blob 存储,尝试为我的 UWP 应用构建一个云数据库。

我设法获得了将文件上传到 Azure 存储的功能,但文件的内容被我想要的垃圾内容替换,但其中有一种模式,我确信表明我做错了什么。

我尝试上传的文件是简单的 .txt 文件,其中的信息行由字符分隔。

.txt 文件的内容应采用如下格式:

:SKU|:brand|:brand |:Train smarter and go farther with the brand, a product designed to help you reach your peak performance.|:249.95|:|:|:|:|:|:|:https://link.com|

:SKU|:brand|:brand Bluetooth Speaker |:Get up to 87 hours of great-sounding wireless music with the brand Bluetooth Speaker .|:269.00|:|:|:|:|:|:|:https://link.com|

:SKU|:brand|:brand Docking Station - USB 3.0 |:This USB 3.0 brand docking station connects up to three additional monitors, external devices, and the Internet .|:169.99|:|:|:|:|:|:|:https://link.com|

但是上传到我的 blob 存储后,内容如下所示:

:SKU|:|:-//W3C//DTD XHTML 1.0 Strict//EN|://DTD XHTML 1.0 Strict//EN|:/W3C//DTD XHTML 1.0 Strict//EN|:|:|:|:|:|:|:-//W3C//DTD XHTML 1.0 Strict//EN|

:SKU|:|:-//W3C//DTD XHTML 1.0 Strict//EN|://DTD XHTML 1.0 Strict//EN|:/W3C//DTD XHTML 1.0 Strict//EN|:|:|:|:|:|:|:-//W3C//DTD XHTML 1.0 Strict//EN|

:SKU|:|:-//W3C//DTD XHTML 1.0 Strict//EN|://DTD XHTML 1.0 Strict//EN|:/W3C//DTD XHTML 1.0 Strict//EN|:|:|:|:|:|:|:-//W3C//DTD XHTML 1.0 Strict//EN|

:SKU|:|:-//W3C//DTD XHTML 1.0 Strict//EN|://DTD XHTML 1.0 Strict//EN|:/W3C//DTD XHTML 1.0 Strict//EN|:|:|:|:|:|:|:-//W3C//DTD XHTML 1.0 Strict//EN|

:SKU|:|:-//W3C//DTD XHTML 1.0 Strict//EN|://DTD XHTML 1.0 Strict//EN|:/W3C//DTD XHTML 1.0 Strict//EN|:|:|:|:|:|:|:-//W3C//DTD XHTML 1.0 Strict//EN|

:SKU|:brand|:brand 1TB Hard Drive for Laptops|:Upgrade your laptop to a 1 TB of storage with a high quality, reliable brand hard drive.|:68.85|:|:|:|:|:|:|:https://link.com|

我的第一个 blob 存储实验是直接上传文件本身,但这导致了同样的问题,因此我尝试了一种不同的方法(流读取/写入),认为该方法不适用于我想要做的事情。现在我正在使用流方法(除非有人有其他建议,否则我会坚持使用),但是对于云连接部分(以及一般的 UWP)来说太陌生了,我不知道我可能做错了什么。

这是我用来上传到我的 blob 存储的代码:

public class DatabaseHelper
{
CloudBlockBlob blobb;

public DatabaseHelper()
{

StorageCredentials credentials = new StorageCredentials("nameommited", "key ommitted");
CloudStorageAccount storageAccount = new CloudStorageAccount(credentials, true);
var blobClient = storageAccount.CreateCloudBlobClient();
var container = blobClient.GetContainerReference("testcontainer");
container.CreateIfNotExistsAsync();

CloudBlockBlob blob = container.GetBlockBlobReference("testfile.txt");
blob.DeleteIfExistsAsync();
blobb = blob;
}

public async void UploadFile(StorageFile fileToUpload)
{

var fileStream = await fileToUpload.OpenAsync(FileAccessMode.Read);
ulong size = fileStream.Size;

// Get a data stream from somewhere.
Stream inputStream = fileStream.AsStream(); ;
await blobb.UploadFromStreamAsync(inputStream);

}
}

最佳答案

根据您的DatabaseHelper,我构建了我的应用程序来测试此问题,如下所示:

private async void btnUploadFile_Click(object sender, RoutedEventArgs e)
{
var picker = new Windows.Storage.Pickers.FileOpenPicker();
picker.ViewMode = Windows.Storage.Pickers.PickerViewMode.Thumbnail;
picker.SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.Desktop;
picker.FileTypeFilter.Add(".txt");

Windows.Storage.StorageFile file = await picker.PickSingleFileAsync();
if (file != null)
{
var fileHelper = new DatabaseHelper();
await fileHelper.UploadFile(file);
}
}

这是我测试的txt文件,你可以引用test.txt .

结果

enter image description here

我注意到您在 DatabaseHelper 构造函数中调用了异步方法,我认为如果您的容器不存在,则会存在一些风险。此外,您可以使用 Microsoft Azure Storage Explorer用于将 txt 文件直接上传到 azure blob,以隔离此问题。另外,还有一个关于 operate Azure blob storage in UWP apps 的样本,你可以引用一下。

关于c# - 移动到 blob 存储后文件内容被重写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44099195/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com