如何从任何类型的数据库(pdf、xlx、jpg 或 png)中检索文件并使其可在网页上下载?
Posted
技术标签:
【中文标题】如何从任何类型的数据库(pdf、xlx、jpg 或 png)中检索文件并使其可在网页上下载?【英文标题】:How to retrieve file from Database of any type(pdf,xlx,jp or png) and make it download-able on webpage? 【发布时间】:2021-10-11 04:03:53 【问题描述】:我正在使用 SQL Server Management Studio。在我的表中有一个数据类型为varbinary(max)
的列。我已成功将特定格式(pdf、xlx、jp 或 png)的文件上传到我的表中。但现在我面临着找回它的困难。我正在使用 ASP.NET。我需要制作一个控制器,它可以通过 LINQ 从数据库中获取文件并将其下载到用户的计算机上。
【问题讨论】:
这方面有很多教程。 我浏览了很多教程,不知何故他们的解决方案不适合我。我的案例内容类型不知道,因为它可以是 pdf、xlsx、png 等。您能否建议我任何具体的教程。我被这种情况困扰了两天。谢谢! 【参考方案1】:有很多关于这个问题的教程,其中包含可能会或可能不会处理当前场景的耗时答案。 因此,您需要分步执行以下操作:
-
在 javascript 中,通过以下步骤将收集到的数据发送到控制器:
var file = document.getElementById("---id of the insert tag where document is loaded").files[0];
然后使用FormData
将文件(变量)附加到表单中。
formData = new FormData();
formData.append("file",file);
当我们向控制器发送数据时,formData 充当键:值对。 现在通过 ajax 将数据发送到控制器:
$.ajax(
url: "--url--",
data: formData,
type: "POST"
...
现在在 URL 中提到的控制器中,确保它包含与 formData.append("file",file);
中提到的同名 file 的参数。文件的数据类型为HttpPostedFileBase
。控制器将如下所示:
[HttpPost]
public ActionResult SaveFile( HttpPostedFileBase file)
//The below mentioned code will convert file in byte[] which can be transferred to database
using (Stream inputStream = file.InputStream)
MemoryStream memoryStream = inputStream as MemoryStream;
if (memoryStream == null)
memoryStream = new MemoryStream();
inputStream.CopyTo(memoryStream);
byteValue = memoryStream.ToArray();// datatype = byte[]
现在通过在服务器上创建文件来从数据库中检索文件,然后通过提供服务器上文件的路径将该文件进一步发送给用户。
filePath = Path.Combine(HttpContext.Current.Server.MapPath("-----Location where you want to save file----"),"---Name of file with extention---");//filePath will create the path. Note: it's just a path.
MultiPurpose.DeleteExistingFile(filePath);// It will delete pre-existing file if already present on the path with same name
System.IO.File.WriteAllBytes(filePath, db.file);// It will create the file present on database with datatype 'byte[]'
return File(filePath ,Content-Type, "--you can mention new file name here---"); // This will download the file on user's pc with the file name mentioned in third parameter.
【讨论】:
以上是关于如何从任何类型的数据库(pdf、xlx、jpg 或 png)中检索文件并使其可在网页上下载?的主要内容,如果未能解决你的问题,请参考以下文章
在纯JaveScript中实现报表导出:从“PDF”到“JPG”
在纯JaveScript中实现报表导出:从“PDF”到“JPG”