La página o secuencia de comandos o lo que sea se alojará en IIS y básicamente debe aceptar un valor de un hipervínculo www.whatever.com?parametervalue=test y ofrecer una descarga de archivo con, por ejemplo, el nombre, myfile.file, que contiene el valor 'test' .
El valor del parámetro no debe tener límite de caracteres en la URL porque es posible que el valor que se pasa sea una cadena muy larga con 4000 caracteres o más.
No estoy seguro de cómo hacer esto. ¿Qué tecnología puedo usar para hacer esto, tal vez html/javascript? He intentado buscar en Google, pero no puedo pensar en la combinación correcta de palabras para identificar lo que estoy buscando.
¿Cómo puedo hacer esto?
Ok, entonces tenemos una página web. El usuario hace clic en algún botón. Ese botón puede luego pasear al perro, hacer la nómina, y ENTONCES también queremos tomar algún archivo xml y pasarlo a la página siguiente, en la que ofrecemos un botón de descarga.
Por lo tanto, parece MUY poca necesidad de usar o tener o querer o incluso considerar usar parámetros en la URL aquí. Además de intentar pasar una cadena xml en un parámetro, podría introducir todo tipo de problemas y problemas.
Entonces, en la primera página:
Haga clic en el botón (¿por qué un hipervínculo???? No tiene ningún sentido aquí).
ese botón, como se indica, puede hacer lo que queramos, incluido obtener y obtener el archivo xml, y por supuesto, también queremos proporcionar e incluir un nombre de archivo para la descarga.
entonces, en esa primera página, descargue el uso de un hipervínculo y use un botón.
Ese botón se
Obtenga los datos xml que queremos y guárdelos en la sesión
session["XMLData"] = " my messy and ugly xml string/data here"; session["XMLFileName] = "ssrs.xml"; Response.Redirect("MyDownloadpage.aspx"); // jump to page with download buttonAhora, en la página de destino, tenemos ese botón de descarga.
Ese botón de descarga puede hacer esto:
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(); }Entonces, desde la página que salta a su página con información y el botón de descarga, puede usar el código como el anterior.
Para pasar los datos xml y el nombre del archivo xml que se usará, puede usar session[] como se indicó anteriormente.
Como se indica en los comentarios, los datos xml deben pasarse en la URL, por lo que ahora el código anterior se convierte en este:
string strXMLData = Request.QueryString["data"];Por supuesto, reemplaza "datos" con el nombre del valor del parámetro pasado.
O simplemente tome el primer valor, diga así:
string strXMLData = Request.QueryString[0]; // manybe use 1 - depends on what url looks likeSi entendí bien tu pregunta, quieres hacer un enlace para que cuando alguien lo visite descargue un archivo. Luego puede crear el archivo download.php y escribir allí
if ($_GET["parametervalue"] == "file1") { echo "<script>(script to download your file)</script>"; }