2011-02-01 21 views
5

He estado usando el sitio de Microsoft Technet y puede descargar los archivos ISO haciendo clic en un enlace en la página. El elemento es la siguiente:¿Cómo funciona un enlace de descarga de JavaScript?

<a href="javascript:void(0)" onmouseout="HideToolTip()" 
    onmouseover="ShowToolTip(event,'Click here to download.')" 
    onclick="javascript:RunDownload('39010^313^164',event)" 
    class="detailsLink">Download</a> 

yo no era capaz de encontrar el método RunDownload() en los guiones. Y me pregunté qué es probable que haga. Me refiero a lo general cuando proporciono un enlace para que alguien descarga proporciono un ancla a la misma:

<a href="www.foo.com/mymp3.mp3">download</a> 

Pero esto está funcionando de manera diferente lo que está haciendo el guión? Porque incluso cuando ejecuté 'Fiddler', no pude ver la ubicación de descarga real.

+0

hay muchas formas en que tal cosa podría funcionar. – Pointy

+0

El delimitador solo funciona si lo tiene almacenado como un archivo en su servidor y, posteriormente, existe una ruta que puede usar para acceder directamente (como www.foo.com/mymp3.mp3 en su ejemplo). Si, por ejemplo, almacena los contenidos binarios de su archivo dentro de una base de datos en su servidor, entonces no puede hacerlo de esa manera porque no existe tal ruta. –

+0

"no existe tal ruta" no tiene significado en algunos casos, por ejemplo, si tiene algunas reglas de reescritura de URL. Entonces, lo que está disponible en la descarga no tiene que ser un archivo físico en su servidor web, puede ser un contenido generado dinámicamente (podría ser de una base de datos). – BiAiB

Respuesta

2

La ubicación de descarga puede ser una ruta url-reescrita. Esto significa que tal vez algunos parámetros se proporcionan con HTTP Post y algún controlador HTTP en el servidor web o aplicación web puede obtener algunos argumentos de la solicitud HTTP y escribir bytes de archivos en una respuesta HTTP, lo que oculta por completo dónde se encuentra el archivo en el el sistema de archivos del servidor actual.

Quizás esto es lo que está detrás de escena y le impide conocer la ubicación del archivo.

Por ejemplo, podemos tener esto: http://mypage.com/downloads/1223893893

Y usted solicita un archivo ejecutable como "whatever.exe" para su descarga en el disco duro. ¿Dónde está "http: /mypage.com/downloads/whatever.exe"? En realidad, no existe. Es una matriz de bytes guardada en una larga base de datos en algún registro, y la aplicación web "mypage" maneja una solicitud de un archivo que se identifica como "1223893893" que puede ser una combinación de un identificador, una fecha o cualquier argumento.

+0

@workdreamer oh, es un enlace inventado jajaja! es solo un enlace de muestra;) –

+0

Perdón por la muy profunda y estúpida pregunta, no leí todo el comentario, tenía prisa por encontrar una respuesta. Muchas gracias – workdreamer

8

no existe el enlace "javascript download". Javascript puede abrir una nueva ventana o simular un clic en un enlace.

Lo que tiene que encontrar es a qué URL dará lugar la función desencadenada por este clic.

aquí está un ejemplo de cómo hacerlo:

Supongamos que tenemos una:

<a id="download">download Here §§§</a> 

entonces este código jQuery:

$('#download').click(function() { 
    window.location.href = 'http://example.org/download/ISO.ISO'; 
}); 

redireccionará a la URL http://example.org/download/ISO.ISO. Si esta url inicia una descarga o no depende de los encabezados HTTP y su navegador, no de lo que javascript haga.

0

Usted dice que tiene un problema con StartDownload en js, no existe tal función en Javascript.así que creo que la descarga de anclaje no funciona
lo que u puede hacer es poner el atributo de descarga en la etiqueta de anclaje como verdadera y no tendrán ningún problema Tengo un ejemplo

<a href="video.mp4" download="true">Download</a> 

ADVERTENCIA: Si se quiere poner atributo de descarga y href será un sitio como http://google.com no se abrirá, pero descargar la página web
Bueno, si desea iniciar la descarga en segundo plano hay opciones par, pero la más fácil:

<iframe name="site_back_load" style="display:none;"></iframe> 
<a href="File.mp4" download="true" target="site_back_load">start download</a> 
Cuestiones relacionadas