我想从网络表单上传.pdf
文件,然后提供下载链接供用户下载。我已经在控制器和视图中编写了一个代码,用于上传文件并将文件的物理路径保存到SQL Server数据库中,并且工作正常。现在我在为用户提供下载链接时面临一个问题,因此在点击该链接时,它应该下载文件或打开。我尝试创建<a></a>
,但它将用于提供Web上存在的文件链接,但我想提供本地计算机上存在的文件链接。
上传文件的代码如下
控制器:
HttpPostedFileBase file = Request.Files["file1"];
try
{
if (file.ContentLength > 0)
{
var filename = System.IO.Path.GetFileName(file.FileName);
var Path = System.IO.Path.Combine(Server.MapPath("~/App_Data"), dbo_tblTdApplicationDetails.ApplicationId.ToString() + ".pdf");
file.SaveAs(Path);
dbo_tblTdApplicationDetails.Path = Path.ToString();
db.Entry(dbo_tblTdApplicationDetails).State = EntityState.Modified;
db.SaveChanges();
}
}
catch
{
ViewBag.Message = "File upload failed!!";
}
查看:
<td>
<div class="form-group ">
Upload file
<div class="col-md-10">
<label for="file1">Filename:</label>
<input type="file" name="file1" />
</div>
</div>
</td>
存储在SQL Server数据库中的物理路径
C:\....\App_Data\1047.pdf
答案 0 :(得分:0)
为完成此请求,解决方案基于以下评论:
因此,您要将文件上传到网络服务器,然后您希望将此文件作为下载提供给其他用户,而不是从webroot内部提供 - 是否正确?如果是这样,您可以尝试流式传输文件,如下所示:Stream file using ASP.NET MVC FileContentResult in a browser with a name?