2017-02-13 7 views
0

나는 약간의 조작이 필요한 코드를 만들었습니다. "텍스트를 파일에 저장"은 다운로드 폴더에 텍스트 파일을 다운로드합니다. 나는 그것이 나에게 길을 묻기를 원한다. 파일을 저장할 위치를 물어봐야하며 다운로드 부분은 백엔드에서 발생해야하며 보이지 않아야합니다. 여기 사용자가 언급 한 폴더에 파일 저장하기 HTML

참조

<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

내가 잘못하면 을 수정하십시오. 그래서 자바 스크립트는 특정 폴더에 파일을 저장할 수 없지만 읽기 권한이 있습니다. 브라우저에서 읽을 수 있습니다. –

관련 문제