41

C# でファイルをアップロードするにはどうすればよいですか? dialogWindow からファイルをアップロードする必要があります。

4

5 に答える 5

63
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Auth;
using Microsoft.WindowsAzure.Storage.Blob;    

// Retrieve storage account from connection string.
    CloudStorageAccount storageAccount = CloudStorageAccount.Parse("StorageKey");

// Create the blob client.
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();

// Retrieve reference to a previously created container.
CloudBlobContainer container = blobClient.GetContainerReference("mycontainer");

// Retrieve reference to a blob named "myblob".
CloudBlockBlob blockBlob = container.GetBlockBlobReference("myblob");

// Create or overwrite the "myblob" blob with contents from a local file.
using (var fileStream = System.IO.File.OpenRead(@"path\myfile"))
{
    blockBlob.UploadFromStream(fileStream);
}

必要なSDKとリファレンスについてはこちら

私はそれがあなたが必要とするものだと思います

于 2013-09-03T17:17:13.073 に答える
3

次のコード スニペットは、ファイルのアップロードを実行する最も単純な形式です。アップロードするファイルの種類を検出し、コンテナの存在を確認するために、このコードにさらに数行を追加しました。

注:- 最初に次の NuGet パッケージを追加する必要があります。

  1. Microsoft.AspNetCore.StaticFiles

  2. Microsoft.Azure.Storage.Blob

  3. Microsoft.Extensions.Configuration

    static void Main(string[] args)
    {
        Console.WriteLine("Hello World!");
        string connstring = "DefaultEndpointsProtocol=https;AccountName=storageaccountnewne9d7b;AccountKey=3sUU8J5pQQ+6YYIi+b5jo+BiSb5XPt027Rve6N5QP9iPEhMXZAbzUfsuW7QDWi1gSPecsPFpC6AzmA9jwPYs6g==;EndpointSuffix=core.windows.net";
        string containername = "newturorial";
        string finlename = "TestUpload.docx";
        var fileBytes = System.IO.File.ReadAllBytes(@"C:\Users\Namal Wijekoon\Desktop\HardningSprint2LoadTest\" + finlename);
    
        var cloudstorageAccount = CloudStorageAccount.Parse(connstring);
        var cloudblobClient = cloudstorageAccount.CreateCloudBlobClient();
        var containerObject = cloudblobClient.GetContainerReference(containername);
    
        //check the container existance
        if (containerObject.CreateIfNotExistsAsync().Result)
        {
            containerObject.SetPermissionsAsync(new BlobContainerPermissions { PublicAccess = BlobContainerPublicAccessType.Blob });
        }
        var fileobject = containerObject.GetBlockBlobReference(finlename);
    
        //check the file type
        string file_type;
        var provider = new FileExtensionContentTypeProvider();
        if(!provider.TryGetContentType(finlename, out file_type))
        {
            file_type = "application/octet-stream";
        }
    
        fileobject.Properties.ContentType = file_type;
        fileobject.UploadFromByteArrayAsync(fileBytes, 0 , fileBytes.Length);
    
        string fileuploadURI = fileobject.Uri.AbsoluteUri;
        Console.WriteLine("File has be uploaded successfully.");
        Console.WriteLine("The URL of the Uploaded file is : - \n" + fileuploadURI);
    }
    
于 2021-01-03T17:32:45.060 に答える
2

BackgroundUploaderクラスを使用できます。次に、 StorageFileオブジェクトとUriを提供する必要があります。必要な名前空間:

using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.Networking.BackgroundTransfer;
using Windows.Storage.Pickers;
using Windows.Storage;

プロセスは次のとおりです。Uri は、UI 入力フィールドを介して提供される文字列値を使用して定義されます。また、アップロードする目的のファイル (StorageFile オブジェクトによって表されます) は、エンドユーザーが、 PickSingleFileAsync 操作

Uri uri = new Uri(serverAddressField.Text.Trim());
FileOpenPicker picker = new FileOpenPicker();
picker.FileTypeFilter.Add("*");
StorageFile file = await picker.PickSingleFileAsync();

その後:

BackgroundUploader uploader = new BackgroundUploader();
uploader.SetRequestHeader("Filename", file.Name);
UploadOperation upload = uploader.CreateUpload(uri, file);

// Attach progress and completion handlers.
await HandleUploadAsync(upload, true);

それで全部です

于 2013-09-03T16:55:13.813 に答える