创建一个简单的网页(IIS),该网页接受来自超链接的值,并以任何扩展名提供该值作为文件下载



页面或脚本或任何将托管在IIS上的东西,基本上应该接受来自超链接www.whatever.com?parametervalue=test的值,并提供一个文件下载,例如名称myfile。文件,包含值'test'.

参数值在URL中不应该有字符限制,因为传递的值可能是一个非常长的字符串,有4000个字符或更多。

我不知道该怎么做。我可以用什么技术来完成这个,也许是html/javascript ?我试过谷歌搜索,但想不出正确的单词组合来精确定位我要找的东西。

我该怎么做呢?

好的,我们有一些网页。用户点击某个按钮。这个按钮可以遛狗,发工资,然后我们还想取一些xml文件,并将其传递到下一页,在下一页中我们提供了一个下载按钮。

所以,似乎很少需要使用或拥有或想要甚至考虑在URL中使用参数。此外,试图在参数中传递xml字符串可能会引入各种各样的问题和问题。

那么,在第一页:

按钮点击(为什么有些超链接????

如前所述,单击按钮可以做任何我们想做的事情,包括获取和获取XML文件,当然,我们还希望提供并包含下载的文件名。

所以,在第一页,放弃使用超链接,使用按钮。

那个按钮将

获取我们想要的xml数据,并保存到会话

session["XMLData"] = " my messy and ugly xml string/data here";
session["XMLFileName] = "ssrs.xml";
Response.Redirect("MyDownloadpage.aspx"); // jump to page with download button

现在,在目标页面上,我们有了下载按钮。

下载按钮可以这样做:

public void DownLoadFile()
{
string strXMLData = Session["MyXMLData"] as string;
string strFile = Session["MyFile"] as string;
string MineType =  MimeMapping.GetMimeMapping(strFile)
Response.Buffer = false; 
Response.Clear();
Response.ClearContent();
Response.ClearHeaders();
Response.AddHeader("Accept-Header", strXMLData.Length.ToString());
Response.AddHeader("Content-Length", strXMLData.Length.ToString());
Response.AddHeader("Content-Disposition", "attachment; filename=" + strFile);
Response.AddHeader("Expires", "0");
Response.AddHeader("Cache-Control", "private");
Response.ContentType = strMineType;
Response.AddHeader("Accept-Ranges", "bytes");
Response.Write(strXMLData);
Response.Flush();
Response.End();
}

那么,从跳转到带有一些信息和下载按钮的页面的页面,你可以使用上面的代码。

要传递xml数据和要使用的xml文件名,您可以使用如上所述的session[]。

编辑:获取url参数如注释中所述,xml数据将在URL中传递,因此现在上面的代码变成如下:

string strXMLData = Request.QueryString["data"];

当然你可以替换"data"无论传递的参数值的名称是什么

或者,直接获取第一个值,像这样:

string strXMLData = Request.QueryString[0];  // manybe use 1 - depends on what url looks like

如果我理解你的问题很好,你想让链接,所以当有人访问它下载一个文件。然后你可以创建download.php文件并写入

if ($_GET["parametervalue"] == "file1") {
echo "<script>(script to download your file)</script>";
}

最新更新