Asp.net mvc (var memoryStream=new memoryStream()) { 等待formFile.CopyToAsync(memoryStream); 返回内存流; } } 如果我的回复有帮助,请将其作为答案接受(单击回复旁边的标记选项,将其从灰色切换
(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
如果我的回复有帮助,请将其作为答案接受(单击回复旁边的标记选项,将其从灰色切换为填充)。非常感谢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;
}
}