Asp.net mvc (var memoryStream=new memoryStream()) { 等待formFile.CopyToAsync(memoryStream); 返回内存流; } } 如果我的回复有帮助,请将其作为答案接受(单击回复旁边的标记选项,将其从灰色切换

Asp.net mvc (var memoryStream=new memoryStream()) { 等待formFile.CopyToAsync(memoryStream); 返回内存流; } } 如果我的回复有帮助,请将其作为答案接受(单击回复旁边的标记选项,将其从灰色切换,asp.net-mvc,azure-blob-storage,Asp.net Mvc,Azure Blob Storage,(var memoryStream=new memoryStream()) { 等待formFile.CopyToAsync(memoryStream); 返回内存流; } } 如果我的回复有帮助,请将其作为答案接受(单击回复旁边的标记选项,将其从灰色切换为填充)。非常感谢Pamela Peng。如果它解决了我的问题,我当然会这样做。 using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; using

(var memoryStream=new memoryStream()) { 等待formFile.CopyToAsync(memoryStream); 返回内存流; } }
如果我的回复有帮助,请将其作为答案接受(单击回复旁边的标记选项,将其从灰色切换为填充)。非常感谢Pamela Peng。如果它解决了我的问题,我当然会这样做。
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using WebAppMVC.Data;
using WebAppMVC.Models;
using WebAppMVC.Utilities;

namespace WebAppMVC.Controllers
{
public class HomeController : Controller
{
    private readonly UserManager<WebAppMVCUser> _userManager;
    private readonly ILogger<HomeController> _logger;

    public HomeController(ILogger<HomeController> logger,UserManager<WebAppMVCUser> userManager)
    {
        _logger = logger;

        /* newly added */
        _userManager = userManager;
        utility = new BlobUtility(accountName, accountKey);
        db = new WebAppMVC_DBContext();
        /* newly added */
    }

    /* newly added */
    BlobUtility utility;
    WebAppMVC_DBContext db;
    string accountName = "_my_Storage_Name";
    string accountKey = "My_storage_account_key";
    /* newly added */

    [Authorize]
    public IActionResult Index()
    {
        /* newly added */
        string loggedInUserId = _userManager.GetUserId(User);
        List<UserMedium> userMedia = (from a in db.UserMedia where a.UserId.ToString() == loggedInUserId select a).ToList();
        ViewBag.PhotoCount = userMedia.Count;
        return View(userMedia);
        /* newly added */
    }

    /* newly added */
    [Authorize]
    public ActionResult DeleteImage(int id)
    {
        UserMedium userImage = db.UserMedia.Find(id);
        db.UserMedia.Remove(userImage);
        db.SaveChanges();
        string BlobNameToDelete = userImage.ImageUrl.Split('/').Last();
        utility.DeleteBlob(BlobNameToDelete, "profilepics");
        return RedirectToAction("Index");
    }

    [Authorize]
    [HttpPost]
    public ActionResult UploadImage(IFormFile file)
    {
        if (file != null)
        {
            string ContainerName = "profilepics"; // container name. 
            //file = Request.File["file"];
            string fileName = Path.GetFileName(file.FileName);
            Stream imageStream = file.OpenReadStream();
            var result = utility.UploadBlob(fileName, ContainerName, (Stream)file);
            if (result != null)
            {
                string loggedInUserId = _userManager.GetUserId(User);
                UserMedium usermedium = new UserMedium();
                usermedium.MediaId = new Random().Next();
                try
                { 
                    usermedium.UserId = Int32.Parse(loggedInUserId);
                }
                catch
                {
                    Console.WriteLine($"Unable to parse '{loggedInUserId}'");
                }
                usermedium.ImageUrl = result.Uri.ToString();
                db.UserMedia.Add(usermedium);
                db.SaveChanges();
                return RedirectToAction("Index");
            }
            else
            {
                return RedirectToAction("Index");
            }
        }
        else
        {
            return RedirectToAction("Index");
        }
    }
    /* newly added */

    [Authorize]
    public IActionResult Privacy()
    {
        return View();
    }
    [Authorize]
    public IActionResult Media()
    {
        return View();
    }

    public IActionResult InformationPortal()
    {
        return View();
    }

    [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
    public IActionResult Error()
    {
        return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
    }
}
}
@model IEnumerable<WebAppMVC.Models.UserMedium>
<div class="container">

<div class="row">
    @using (Html.BeginForm("UploadImage", "Home", FormMethod.Post, new { enctype = "multipart/form-data" }))
    {
        <div class="panel panel-warning">
            <div class="panel-heading">
                <h3 class="panel-title">Upload and save your photo</h3>
            </div>
            <div class="panel-body">
                <div class="row">
                    <div class="col-md-4 col-md-offset-4">
                        <input type="file" name="file" />
                        <br />
                        <input type="submit" class="btn btn-warning form-control" value="Save Photo" />
                    </div>
                </div>
            </div>
        </div>
    }

</div>

<br />

<div class="row">
    <div class="col-lg-12">

        <div class="alert alert-warning">You have @ViewBag.PhotoCount Photos </div>
    </div>
    @foreach (var item in Model)
    {
        <div class="col-lg-3 col-md-4 col-xs-6 thumb">

            <a class="thumbnail" href="@item.ImageUrl">
                <img class="img-responsive" src="@item.ImageUrl" style="height: 300px;width:100%;" alt="">
            </a>
            <a href="@Url.Action("DeleteImage", "Home",new { id = item.MediaId })" class="btn btn-default btn-block">
                <span class="glyphicon glyphicon-remove" aria-hidden="true"></span>
            </a>

        </div>
    }

</div>
    public static async Task<Stream> GetStream(this IFormFile formFile)
    {
        using (var memoryStream = new MemoryStream())
        {
            await formFile.CopyToAsync(memoryStream);
            return memoryStream;
        }
    }