如何发送和接收文件?

时间:2011-05-16 12:50:32

标签: asp.net file httppostedfile

我想要以下类型的功能

有两个用户AB都在访问同一页面这个页面有一个按钮(发送文件)。
A点击按钮时,会出现Open Dialog框。当AOpen Dialog框中选择文件时,应该会显示一个链接B包含文件名的页面。当B点击链接时,应显示SaveAs对话框,并在提供名称和路径文件后应开始下载。

在此背景下的任何形式的帮助将不胜感激!

2 个答案:

答案 0 :(得分:1)

那么页面可以分为两部分:一部分文件上传控件,另一部分通过AJAX每3-4秒轮询一次,看看是否有新文件。

Side“A”具有标准的文件上传控件,并使用标准的.NET方式保存上传的文件(参见FileUpload.PostedFile.SaveAs(路径),简单的东西)。文件上传完成后,刷新此页面。

Side“B”是一个div,它从AJAX调用,XML,JSON或简单的文本中获取其内容。有一个名为“link.aspx”的AJAX页面,可以以您想要的任何格式踢回内容。

对于链接,如果要强制“下载”窗口,则文件需要是浏览器中未正常显示的类型,或者您需要使用另一个aspx页面来提供文件并强制对话框保存或打开。

该aspx页面将被称为“file.aspx”,你可以传入一个查询字符串参数(“id”或其他东西)告诉它你想要什么文件。您在此页面后面的代码将从该查询字符串参数中找出您需要的文件,然后将提供该文件:

Response.AddHeader("Content-Disposition", "attachment; filename=" + file.fileName);
Response.AddHeader("Content-Length", file.Length.ToString());
Response.ContentType = "image/jpeg"; // you gotta figure out the content type of the file here though. This is just the one for JPEGS.

byte[] buffer = new byte[file.Length];
dl.Read(buffer, 0, (int)file.Length);

Response.BinaryWrite(buffer);
Response.End();

答案 1 :(得分:1)

使用html输入实现打开的对话框:<input type="file">

使用html锚点<a href="www.myserver.com/download.aspx?filename='the file'">

实现了另存为对话框

用户A选择文件后,您可以使用AJAX或表单onsubmit通过您创建的upload.aspx页面上传文件。

在用户B的计算机上,使用AJAX调用updatefilelist.aspx页面,该页面返回可用文件列表。一旦用户A的新文件上传并保存在服务器上,用户B的AJAX调用updatefilelist.aspx的下一次ping将更新其屏幕上显示的列表以包含新文件。

单击该文件会调用包含所需文件名的download.aspx页面 - 您需要在此处设置Response.ContentTypeResponse.AddHeader("Content-Disposition", "attachment:filename=""" & IO.Path.GetFileName(Request.QueryString("filename")) & """")。然后会自动弹出另存为对话框。