如何创建指向我在SQL表中保存为内存流的文件的链接?

时间:2017-01-18 19:35:02

标签: c# sql asp.net

我的Web应用程序(C#和ASP.Net)允许某人上传jpg / pdf文件并将其作为内存流保存在SQL表中。这就是一旦写在表中的样子:

0xFFD8FFE000104A4649.....

现在我想通过用户可以下载此文件的链接在我的网络界面上提供此文件。我通过使用

将上面的字符串转换回字节数组来检索我的文件
filedata = Encoding.ASCII.GetBytes(<string above>);

然后我打电话给你:

string filename = "pic.jpg";
File.WriteAllBytes(filename, filedata);

但我不知道如何将此作为我的网络界面上的可下载链接发布回用户。我是否必须将此文件保存到我服务器上的临时文件夹中,或者是否有一种方法可以调用我的文件作为图片来回显示用户将被提示保存文件或打开文件?

谢谢!

2 个答案:

答案 0 :(得分:4)

您需要创建一个页面/操作/函数,将这些位写回作为对HTTP请求的响应。请记住,这样做可能需要根据文件的内容在响应中设置正确的Content-Type标头。

因此,您生成一个调用您的页面/操作/功能的链接。然后,它将二进制数据发送回HTTP响应。像

这样的东西
<a href="http://www.example.com/getFile.aspx?fileName=pic.jpg">pic.jpg</a>

如果你详细了解了你正在使用的框架(MVC,WebForms等),那么我们可以给出更详细的例子。

答案 1 :(得分:0)

取决于您想要呈现图像的方式。

如果要在Web中嵌入图像,请使用

返回指向该文件的链接
string filename = Path.Combine(HttpRuntime.AppDomainAppPath, "Content/Images/pic.jpg");
File.WriteAllBytes(filename, filedata);
return filename;

然后在JavaScript端创建一个img

src元素

或者,如果您希望用户下载文件,请执行@squillman在答案中所说的内容