2017-02-13 10 views
0

私は、特定の調整を行うコードを作成しました。 "テキストをファイルに保存"は、ダウンロードフォルダにテキストファイルをダウンロードします。私はそれが私に道を促すようにしたい。ファイルを保存する場所を私に尋ねる必要があります。ダウンロード部分はバックエンドで実行する必要があり、表示するべきではありません。ここでユーザーが言及したフォルダにファイルを保存するHTML

が、これはユーザーのコンピュータにセキュリティ上の危険性がありますので、あなたが別の場所にJavaScriptを使用してファイルをダウンロードすることはできません参照

<html> 
<body> 

<table> 
    <tr><td>Text to Save:</td></tr> 
    <tr> 
     <td colspan="3"> 
      <textarea id="inputTextToSave" cols="80" rows="25"></textarea> 
     </td> 
    </tr> 
    <tr> 
     <td>Filename to Save As:</td> 
     <td><input id="inputFileNameToSaveAs"></input></td> 
     <td><button onclick="saveTextAsFile()">Save Text to File</button></td> 
    </tr> 
    <tr> 
     <td>Select a File to Load:</td> 
     <td><input type="file" id="fileToLoad"></td> 
     <td><button onclick="loadFileAsText()">Load Selected File</button><td> 
    </tr> 
</table> 

<script type="text/javascript"> 

function saveTextAsFile() 
{ 
    var textToSave = document.getElementById("inputTextToSave").value; 
    var textToSaveAsBlob = new Blob([textToSave], {type:"text/plain"}); 
    var textToSaveAsURL = window.URL.createObjectURL(textToSaveAsBlob); 
    var fileNameToSaveAs = document.getElementById("inputFileNameToSaveAs").value; 

    var downloadLink = document.createElement("a"); 
    downloadLink.download = fileNameToSaveAs; 
    downloadLink.innerHTML = "Download File"; 
    downloadLink.href = textToSaveAsURL; 
    downloadLink.onclick = destroyClickedElement; 
    downloadLink.style.display = "none"; 
    document.body.appendChild(downloadLink); 

    downloadLink.click(); 
} 

function destroyClickedElement(event) 
{ 
    document.body.removeChild(event.target); 
} 

function loadFileAsText() 
{ 
    var fileToLoad = document.getElementById("fileToLoad").files[0]; 

    var fileReader = new FileReader(); 
    fileReader.onload = function(fileLoadedEvent) 
    { 
     var textFromFileLoaded = fileLoadedEvent.target.result; 
     document.getElementById("inputTextToSave").value = textFromFileLoaded; 
    }; 
    fileReader.readAsText(fileToLoad, "UTF-8"); 
} 

</script> 

</body> 
</html> 
+2

"ダウンロード部分はバックエンドで実行する必要があります" - クライアント側のJavaScriptで作業していますが、バックエンドはありません。 – Quentin

+0

私がバックエンドと言っているのは、ダウンロード中のファイルがフレーム/画面に表示されてはならないということです。 –

+0

あなたが言及している質問は、私が尋ねた質問とは異なります。 –

答えて

0

ためのコードです。あなたができる唯一のことは、テキストファイルをユーザーのダウンロードフォルダにダウンロードすることです。ただし、実際に別のディレクトリにファイルをダウンロードする必要がある場合は、ブラウザの拡張機能を使用してファイルを実行することができます。ユーザーがファイルのダウンロードを見ることができないようにする方法もありません。ユーザーにファイルのダウンロードが見えないようにするには、ダウンロードしてドライブを使用できるかもしれませんが、通常、バーの所有者はそのバグに非常に迅速にパッチを当てます。

+0

あなたが話している拡張機能の名前を教えてください –

+0

自分の拡張機能を構築することを話しています –

+0

私が間違っていると私を訂正します。 javaスクリプトは特定のフォルダにファイルを保存できませんが、ブラウザから読み取ることができます。 –

関連する問題