javascript 강제 다운로드

| 0

이 기사에서는 순수 Javascript를 사용하여 파일을 직접 생성하고 다운로드하는 몇 가지 트릭을 보여 드리겠습니다. 내 고객 중 하나는 자신의 응용 프로그램에 멋진 기능을 추가하도록 요청 : Excel 보고서 파일을 다운로드합니다. 자바 스크립트로 다운로드를 시작해야하지만 GET 요청만큼 간단하지 는 않습니다. 자바 스크립트를 사용하여 파일을 생성하고 다운로드 ? 당신이 그것에 대해 생각 하는 경우, 이것은 당신이 생각 하 고 사용자 상호 작용 없이 허용 되지 않아야(그러나 지금 허용). XHR 또는 가져오기 API를 사용하는 GET 요청에서 데이터 흐름은 자바스크립트에 의해 처리됩니다. 그건 내가 하고 싶었던 일이 아니에요. 브라우저는 Javascript 엔진의 변수를 채우는 대신 내 파일을 사용자의 컴퓨터에서 다운로드해야 한다는 것을 이해해야 합니다. 우리가 그렇게 할 네이티브 자바 스크립트 기능이 없기 때문에 브라우저 (사용자)에 의해 다운로드 할 파일을 강제로 하드 보인다. 나는 이 함수가 존재하지 않는 이유를 알고 있지만 여전히 내 앱에서 다운로드 파일을 강제로 해야합니다! 예를 들어, 프론트 엔드 앱에 비즈니스 논리를 넣을 때 Force 다운로드 스크립트는 오랫동안 인터넷 사용성의 중요한 부분이었습니다. 나는 서버 측에서이 기능을 구현 한 횟수와 PHP Force 다운로드 게시물의 인기를 오늘날까지 도저히 증명할 수 있습니다. 웹 세계가 클라이언트 쪽을 훨씬 더 많이 이동하면서 서버없이 다운로드를 강제할 수있는 방법을 찾기 시작했고 이를 발견했습니다…. 바로 파이어 폭스 DevTools 디버거에서! 위의 예제 코드를 주의 깊게 보면 다운로드 링크 파인트를 “download.php” 파일로 찾을 수 있으며 URL에는 이미지 파일 이름이 쿼리 문자열로 포함되어 있습니다. 또한 파일 이름에는 URL 안전하지 않은 문자가 포함될 수 있으므로 PHP urlencode() 함수를 사용하여 이미지 파일 이름을 URL 매개 변수로 안전하게 전달할 수 있습니다.

이것이 도움이 될 수 있다면 C # (구현용 Razor)에서이 방법을 설명합니다. 위의 예제(줄 no-8)의 정규식은 이름이 점 문자로 시작되거나 끝나는 파일을 허용하지 않습니다(예: kites.jpg 또는 Kites.jpg, myscript.min.js)와 같은 파일 이름을 허용하지만 kites.jpg는 허용하지 않습니다. 또는 .kites.jpg. PHP readfile() 기능을 사용하여 이미지 또는 다른 종류의 파일을 사용자의 하드 드라이브에 직접 다운로드하도록 강제할 수 있습니다. 여기서는 사용자가 한 번의 마우스 클릭으로 브라우저에서 이미지 파일을 다운로드 할 수있는 간단한 이미지 갤러리를 만들 것입니다. 마지막으로 앵커에서 클릭 이벤트를 트리거하여 규칙적인 동작을 시작하고 브라우저가 작업을 수행하도록 해야 합니다. 아 하! 가능! 위의 데이브 월시의 스크립트 앞에, 나는 먼저 같은 가져 오기 ()와 파일의 가져 오기를 스트리밍 : 캐시 된 콘텐츠를 무시, 현재 페이지를 다시로드 : Shift + F5 또는 Ctrl + Shift +r 다음 나는 데이터로이 솔루션의 함수에 fileContents를 전달합니다. 이것이 가장 좋은 방법인지는 모르겠지만 테스트에서 잘 작동하는 것 같습니다.

다음 스니펫을 사용하면 파일을 생성하고 (확장자와 함께) 서버에 연결하지 않고 다운로드 할 수 있습니다 : 현재 작업 중인 프로젝트 중 하나는 jQuery가 필요합니다. 이 프로젝트는 또한 자신의 위치에 방문을 요청하기위한 날짜 선택기를 갖추고 있습니다. jQuery UI의 DatePicker 플러그인은 자연스러운 선택이었고 정말 좋은 일을합니다. 내가 만난 한 가지 도전은 … @Steven 답변 외에도 개발자 도구 콘솔을 열면 새로 고침 버튼을 마우스 오른쪽 버튼으로 클릭하고 드롭다운 메뉴를 사용할 수 있습니다. 다음 간단한 기능을 사용하면 서버에 연결하지 않고 브라우저에서 직접 파일 다운로드를 생성할 수 있습니다. 그것은 요소의 다운로드 속성을 사용 하 여 모든 HTML5 준비 브라우저에서 작동: “image-gallery.php” 라는 파일을 만들고 그 안에 다음 코드를 배치 하자.