web-dev-qa-db-ja.com

Javascriptを使用してファイルをダウンロードする

ユーザーが自分のサーバーからダウンロードできるようにしたいこのExcelファイルがあります。 「ダウンロード」ボタンをクリックした後、ファイルのダウンロードを開始する簡単な方法があるはずです...しかし、それを実現する方法がわかりません。

私はこれまでにこれを持っています:(VBscriptとASP)

<head>
<script type="text/javascript" src="overzicht.js"></script>
</head>

Set fs=Server.CreateObject("Scripting.FileSystemObject")

    if (fs.FileExists("c:\file.xls"))=true then   'fake filename D:
        response.write("<input type='button' value='Download Masterfile' class='button' onclick='exportmasterfile();' /><br />")
    else
        response.write("Masterfile not found. <br />")
    end if

    set fs=nothing

Javascript関数は空です。

9
Kablam

あなたはこれを信じるつもりはありません。それを見つけた...

function exportmasterfile()
{   var url='../documenten/Master-File.xls';    
    window.open(url,'Download');  
}

すみません!

19
Kablam

実際、「より効率的な」(そしてよりセクシーな)方法が必要な場合は、次を使用します。

location.href = your_url;

そうすれば、コンパイラがlocationのプロトタイプチェーンからwindowオブジェクトに到達するまでの時間を節約できます。

21
Andreas Grech

サーバーがそのmimeタイプのファイルのダウンロードをトリガーするように構成されている場合、これは次のように簡単です。

window.location = your_url
5
Nick Retallack

バイナリファイルをダウンロードするためのVBScript関数は次のとおりです。

Function SaveUrlToFile(url, path)
  Dim xmlhttp, stream, fso

  ' Request the file from the internet.
  Set xmlhttp = CreateObject("MSXML2.XMLHTTP")
  xmlhttp.open "GET", url, false
  xmlhttp.send
  If xmlhttp.status <> 200 Then
    SaveUrlToFile = false
    Exit Function
  End If

  ' Download the file into memory.
  Set stream = CreateObject("ADODB.Stream")
  stream.Open
  stream.Type = 1 ' adTypeBinary
  stream.Write xmlhttp.responseBody
  stream.Position = 0 ' rewind stream

  ' Save from memory to physical file.
  Set fso = Createobject("Scripting.FileSystemObject")
  If fso.Fileexists(path) Then
    fso.DeleteFile path
  End If
  stream.SaveToFile path

  SaveUrlToFile = true
End Function
1
Stephen Quan