我想要以下类型的功能
有两个用户A
并且B
都在访问同一个页面
这个页面有一个按钮(发送文件)。单击按钮
时,应出现一个框当从框中选择一个文件时,应在包含文件名的页面 上出现一个链接单击链接时,应出现一个对话框,并在给出名称和路径后开始下载文件。在这种情况下的任何帮助都将不胜感激!A
Open Dialog
A
Open Dialog
B
B
SaveAs
我想要以下类型的功能
有两个用户A
并且B
都在访问同一个页面
这个页面有一个按钮(发送文件)。单击按钮
时,应出现一个框当从框中选择一个文件时,应在包含文件名的页面 上出现一个链接单击链接时,应出现一个对话框,并在给出名称和路径后开始下载文件。在这种情况下的任何帮助都将不胜感激!A
Open Dialog
A
Open Dialog
B
B
SaveAs
那么页面可以分成两半:一是文件上传控件,另一半是通过 AJAX 每 3-4 秒轮询一次以查看是否有新文件。
“A”面有一个标准的文件上传控件,并使用标准的 .NET 方式保存上传的文件(参见 FileUpload.PostedFile.SaveAs(path),简单的东西)。文件上传完成后,刷新此页面。
“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();
打开对话框是通过 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 对 updatefilelist.aspx 的 AJAX 调用的下一次 ping 将更新他屏幕上显示的列表以包含新文件。
单击该文件会调用具有所需文件名的 download.aspx 页面 - 您需要在此处进行Response.ContentType
设置Response.AddHeader("Content-Disposition", "attachment:filename=""" & IO.Path.GetFileName(Request.QueryString("filename")) & """")
。然后会自动弹出另存为对话框。