gpt4 book ai didi

c# - 显示上传到服务器的图片

转载 作者:行者123 更新时间:2023-11-30 21:58:27 26 4
gpt4 key购买 nike

我正在尝试在 ASP MVC5 项目中创建用户个人资料图片。我添加了一个名为 changepicture.cshtml 的页面,它将显示当前用户的图片。

我有一个上传功能,可以拍摄某人上传的照片,如 hank.jpg 并将其重命名为 users_id.jpg

例如:

System.Data.Entity.DynamicProxies.ApplicationUser_9C8230B38B954135385F2B0311EAC02ED8B95C4D504F8424BA3ED79B37F0AAAF.jpg

我想通过抓取用户 ID 并添加 .jpg 在页面中显示每个用户的个人图片,我该怎么做?

改变图片.cshtml

@model KidRoutineLogging.Models.ChangePictureViewModel
@{
ViewBag.Title = "Change Picture";
}

<h2>@ViewBag.Title.</h2>

<h4>Your Current Picture : @Html.ViewBag.CurrentPicture</h4>

<img src="@Url.Content("~/uploads/hank.jpg")" />

<br />
<br />
@using (Html.BeginForm("", "Home", FormMethod.Post, new { enctype = "multipart/form-data" }))
{

<input type="file" name="FileUpload1" /><br />
<input type="submit" name="Submit" id="Submit" value="Upload" />
}


@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}

HomeController.cs

public async Task<ActionResult> Index()
{
foreach (string upload in Request.Files)
{
var user = await UserManager.FindByIdAsync(User.Identity.GetUserId());

string path = AppDomain.CurrentDomain.BaseDirectory + "uploads/";
//string filename = Path.GetFileName(Request.Files[upload].FileName);
//Request.Files[upload].SaveAs(Path.Combine(path, filename));

Request.Files[upload].SaveAs(Path.Combine(path, user + ".jpg"));
}
return View();
}

最佳答案

因为您正试图将整个类(对象)转换为字符串,所以您得到了一个时髦类型的文件名。此外,如果您想将文件命名为“UserId.jpg”,则您的代码会做更多的工作。

这一行:

var user = await UserManager.FindByIdAsync(User.Identity.GetUserId());

可以简化为这一行:

var userId = User.Identity.GetUserId();

这将使您的最终代码为:

public async Task<ActionResult> Index()
{
foreach (string upload in Request.Files)
{
var userId = User.Identity.GetUserId();
string path = AppDomain.CurrentDomain.BaseDirectory + "uploads/";
Request.Files[upload].SaveAs(Path.Combine(path, userId + ".jpg"));
}
return View();
}

您可以完全摆脱 userId 变量,并将您的 SaveAs 方法更新为

Request.Files[upload].SaveAs(Path.Combine(path, User.Identity.GetUserId()+ ".jpg"));

另外 - 你真的应该用 <HttpPost> 装饰这个 ActionResult属性,因为它应该只处理表单的 POSTing 而不是与 GET 请求相关联。

关于c# - 显示上传到服务器的图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30089776/

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