Necesito transmitir un archivo que dará como resultado guardarlo en el navegador. El problema es que el directorio donde se encuentra el archivo está prácticamente mapeado, por lo que no puedo usar Server.MapPath para determinar su ubicación real. El directorio no está en la misma ubicación (o incluso servidor físico en los cuadros activos) que el sitio web.Descargar/Transmitir archivo desde la URL - asp.net
Me gustaría algo como lo siguiente, pero eso me permitirá pasar una URL web, y no una ruta de archivo del servidor.
Puede que tenga que terminar construyendo mi ruta de archivo desde una ruta base de configuración, y luego anexar en el resto de la ruta, pero espero poder hacerlo de esta manera.
var filePath = Server.MapPath(DOCUMENT_PATH);
if (!File.Exists(filePath))
return;
var fileInfo = new System.IO.FileInfo(filePath);
Response.ContentType = "application/octet-stream";
Response.AddHeader("Content-Disposition", String.Format("attachment;filename=\"{0}\"", filePath));
Response.AddHeader("Content-Length", fileInfo.Length.ToString());
Response.WriteFile(filePath);
Response.End();
Nos puedes contar un poco de lo que entendemos por "prácticamente asignada"? ¿Una carpeta virtual de IIS accesible por URL? – EventHorizon
Está utilizando una ruta VPP, que es un concepto utilizado por EpiServer CMS Configuramos el nombre de la ruta virtual (es decir, "/ documentos /") y luego especificamos qué ruta física también debe mapear (ej. "// nombre de servidor/documentos") El sistema luego crea esta referencia al directorio en tiempo de ejecución. Puede navegar a los archivos a través de la URL web sin problema – mp3duck
El nombre del archivo es de hecho accessibile vía URL. Necesito usar esta URL para transmitir el archivo, y no la ruta del servidor, ya que no puedo desmarcar esto de la URL (usando MapPath) – mp3duck