gpt4 book ai didi

c# - 从 Razor 页面上传到 Azure 文件共享

转载 作者:行者123 更新时间:2023-12-03 03:30:53 33 4
gpt4 key购买 nike

我正在尝试查找从 Razor 页面将文件上传到 Azure 文件共享或 Blob 存储的示例。我使用 tutorial 中的代码但此操作仅将文件复制到本地文件系统。现在我找到了article在 stackoverflow 上,但它不起作用。我收到错误消息

 var storageAccount = CloudStorageAccount.Parse(< your creds here>); 
 the name "CloudStorageAccount does not exist in the current context"

我正在使用 Visual Studio 2022、.Net Core 2.2。任何帮助将不胜感激。

最佳答案

最初我也遇到了错误。 enter image description here

  • CloudStorageAccount 所需的 NuGet 包是WindowsAzure.Storage

enter image description here

  • 但在程序包管理器中,您可以看到 WindowsAzure.Storage 已弃用。

  • 您还可以看到提到了备用包Azure.Storage.Blobsenter image description here

  • 安装最新的 Azure.Storage.Blobs NuGet 包。

  • 当我尝试安装 Azure.Storage.Blobs 包时,出现以下错误。

"System.IO.Hashing doesn't support $(TargetFramework). Consider >updating the TargetFramework to netcoreapp3.1 or later." />

enter image description here

该错误明确指出要更新并使用 .NET Core 最新版本。

我可以通过安装以下 NuGet 包来解决 .Net Core 2.1 中的问题。Microsoft.Azure.Storage.DataMovement

enter image description here

  • 添加 using 命名空间 using Microsoft.Azure.Storage

enter image description here

我的 .csproj 文件

<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp2.1</TargetFramework>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.App" />
<PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.1.2" PrivateAssets="All" />
<PackageReference Include="Microsoft.Azure.Storage.DataMovement" Version="2.0.4" />
</ItemGroup>
</Project>

我的Conroller.cs

using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.Storage;
using Microsoft.Azure.Storage.File;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using WebAppMVC.Models;

namespace WebAppMVC.Controllers
{
public class HomeController : Controller
{
public IActionResult Index()
{
return View();
}
[HttpPost]
public async Task<IActionResult> Upload(IFormFile file)
{
if (file != null)
{
using (var stream = new MemoryStream())
{
try
{

await file.CopyToAsync(stream);
stream.Seek(0, SeekOrigin.Begin);


var filename = file.FileName;
var storageAccount = CloudStorageAccount.Parse("YOUR CREDS HERE");
var client = storageAccount.CreateCloudFileClient();
var shareref = client.GetShareReference("YOUR FILES SHARE");
var rootdir = shareref.GetRootDirectoryReference();
var fileref = rootdir.GetFileReference(filename);
await fileref.DeleteIfExistsAsync();
await fileref.UploadFromStreamAsync(stream);

return Ok(new { fileuploaded = true });
}
catch (Exception ex)
{
return BadRequest(ex);
}
}
}
else
{
return BadRequest(new { error = "there was no uploaded file" });
}
}

}
}

关于c# - 从 Razor 页面上传到 Azure 文件共享,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74788498/

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