【问题标题】:ASP MVC: how to save filesASP MVC:如何保存文件
【发布时间】:2025-12-02 07:35:01
【问题描述】:
在视觉工作室我有以下场景:
一个解决方案有两个项目:
- 一个 Asp MVC 项目
- 一个 Web Api 项目
在 Asp MVC 项目的控制器中,我想在文件系统中保存文件(上传)
- 我必须将文件保存在哪里?在 asp mvc 项目内的文件夹中?
- 可以将文件保存在 C:\ 文件系统的文件夹中。怎么做?
在 web api 项目中,我需要将 asp mvc 项目保存的图像发送给客户端。
- 如果图像位于 asp mvc 项目的文件夹中而不是 c:\ 文件系统中,我如何访问这些图像?
【问题讨论】:
标签:
asp.net
asp.net-mvc
asp.net-web-api
windows-server-2008
【解决方案1】:
我了解到您想保存图片,但不确定应该保存在哪里。如果问题是这样,
如果服务器不止一台,您需要将文件(图像)保存到数据库。因为,如果您将图像保存到服务器,其他人就无法访问它们。
如果只有一台服务器,您可以将它们存储到文件系统。但是,您需要存储有关图像的信息以便在需要时到达。因此,无论如何您都需要数据库。因此,将图像存储到数据库是一个不错的选择。
我认为this link 还可以帮助您将图像文件存储到文件系统和数据库中。
【解决方案2】:
你可以试试这个:
byte[] image = Convert.FromBase64String(pImage);
string assemblyFolder = Path.GetDirectoryName(AppDomain.CurrentDomain.BaseDirectory);
File.WriteAllBytes(assemblyFolder + @"\" + "fileName", image);
【解决方案3】:
- 是的,只要您对文件夹具有写入权限,就可以将文件保存在项目中。
2。
要将文件保存在位置表单控制器中,您可以执行以下操作; (在html端输入类型需要是文件)
[HttpPost]
public void UploadFile(HttpPostedFileBase file)
{
if (file.ContentLength > 0)
{
var fileName = Path.GetFileName(file.FileName);
var path = Path.Combine(serverPath, fileName);
file.SaveAs(path);
}
}
- 如果您从其他应用程序访问该文件,我的建议是将文件保存在一个公共文件夹(可能是公共网络文件系统)中。您可能有访问权限问题。
【解决方案4】:
是的,这是可能的
第 1 步
在您的控制器中创建任何名称的操作方法
第 2 步
编写以下代码
公共 ActionResult 文件(HttpPostedFileBase 文件)
{
尝试
{
字符串路径 = @"C:\File_Upload\";
如果(文件!= null)
{
文件.另存为(路径 + 文件.文件名);
返回视图();
}
别的
{
返回视图();
}
}
捕捉(例外前)
{
扔前;
}
}
文件:是您的操作方法名称,您将文件保存在给定路径中
HttpPostedFileBase:
HttpPostedFileBase 类是一个抽象类,包含与 HttpPostedFile 类相同的成员。 HttpPostedFileBase 类允许您创建类似于 HttpPostedFile 类的派生类,但您可以自定义这些派生类,并且可以在 ASP.NET 管道之外工作。
第 3 步
创建用于存储输入文件的输入标签的视图
在视图中编写以下代码
view