c# - una - hipervinculos en html ejemplos
¿Cómo puedo obtener un enlace a un archivo para abrir dicho archivo? (1)
Genero un archivo PDF dentro de una página Sharepoint; como hasta ahora no he podido dejar que el usuario elija un lugar de aterrizaje para el archivo pdf (como se le preguntó aquí ), he decidido crear un enlace al archivo en la página, con la esperanza de que al hacer clic en el enlace se abra el archivo. Aquí está el código:
String pdfFileID = GetYYYYMMDDAndUserNameAndAmount();
String pdfFileName = String.Format("DirectPayDynamic_{0}.pdf",
pdfFileID);
String fileFullpath
Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory), pdfFileName);
String fileLinkBase = "Generated PDF: <a href=/"file:///{0}/">{1}</a>";
String filelink = String.Format(fileLinkBase, fileFullpath, pdfFileName);
File.WriteAllBytes(fileFullpath, bytes);
AddVerticalSpace();
var pdflink = new Label // would this be preferable: "LiteralControl pdflink = new LiteralControl();" ?
{
CssClass = "dplatypus-webform-field-label",
Text = filelink
};
this.Controls.Add(pdflink);
Esto crea el enlace muy bien:
... pero al hacer clic en el enlace no se abre el archivo. O dar un err msg; simplemente se sienta allí como un bulto en un pantano.
Para verificar que no tenía nada que ver con el archivo PDF, intenté crear un archivo de texto en la ruta y acceder a él:
String pdfFileName = String.Format("DirectPayDynamic_{0}.pdf", pdfFileID);
pdfFileName = "czechitout.txt"; // Remove after testing
... pero, por desgracia, al hacer clic en "czechitout.txt" no se hace nada: el Bloc de notas no abre ni da ninguna indicación sobre el motivo por el que lo recalienta.
Entonces, ¿cómo puedo obtener un enlace en una página Sharepoint para invocar el software asociado y ejecutar el archivo al que se hace referencia?
ACTUALIZAR
NOTA: Me conformaría con abrir Explorer, mostrar el archivo (generalmente el usuario lo copiará de un lugar a otro de todos modos).
ACTUALIZACIÓN 2
Simplemente guardando el archivo sin ninguna información de ruta, de esta manera:
String pdfFileID = GetYYYYMMDDAndUserNameAndAmount();
String pdfFileName = String.Format("DirectPayDynamic_{0}.pdf", pdfFileID);
String fileLinkBase = "Generated PDF: <a href=/"file:///{0}/">{1}</a>";
String filelink = String.Format(fileLinkBase, pdfFileName, pdfFileName);
File.WriteAllBytes(fileFullpath, bytes);
AddVerticalSpace();
var pdflink = new Label // would this be preferable: "LiteralControl pdflink = new LiteralControl();" ?
{
CssClass = "finaff-webform-field-label",
Text = filelink
};
this.Controls.Add(pdflink);
Cuando mezclo el enlace, aparece "Error en la página"
F12ing me da la baja / flaca / Buttlescut:
No se permite cargar el recurso local: file: ///DirectPayDynamic_20150717_clayshan_0.pdf
ACTUALIZACIÓN 3
Luego intenté la sugerencia de guardar en un directorio específico (sin usar el jazz "SpecialFolder" de los pantalones de fantasía, así:
String pdfFileName = String.Format(@"C:/Projects/DirectPaymentWebForm/DirectPayDynamic_{0}.pdf", pdfFileID);
... pero no me fue mejor así (el archivo está allí, pero tratar de invocarlo a través del enlace es un ejercicio inútil).
ACTUALIZACIÓN 4
Incluso lo intenté con un archivo de texto modesto, de modo que:
String pdfFileName = @"C:/Projects/DirectPaymentWebForm/tryopeningthis.txt";
... pero mi bloque de captura se alcanza:
catch (Exception ex)
{
String exMsg = ex.Message;
}
... donde el msg es, " Acceso a la ruta ''C: / Projects / DirectPaymentWebForm / tryopeningthis.txt'' es denegado. "
La ruta / archivo existe; ¿Por qué no recibiría ese mismo mensaje err con el archivo pdf?!?
Este no es el problema con el archivo. Es por los conceptos de seguridad. Cualquier archivo al que nos refiramos dentro de nuestras páginas web, debe estar bajo la misma estructura de directorio. Si puede abrir las herramientas de desarrollador utilizando la opción F12 dentro del navegador, puede ver algunos errores de la consola que dicen
No se permite cargar el recurso local: "su ruta de archivo"
puedes lograr eso de dos maneras:
- intente generar su archivo a la estructura de la carpeta de la aplicación
- cree un botón de enlace y al hacer clic en ese botón, envíe el documento como una secuencia para generar
Espero que esto resuelva tu problema.
EDITAR con el enfoque mencionado en el punto 1, puede usar el siguiente código.
<a href="<your file path>">link</a>
En la ruta del archivo, no es necesario mencionar file: /// text. Esto funciona
EDITAR El proceso anterior hace que el archivo se cargue en la página actual.
Para cargar el archivo en otra ventana o como ventana emergente, use
<a href="javascript:window.Open("<file name>");">link</a>