2017-01-31 1 views
3

우리는 입력 매개 변수를 가져 와서 그들이 처리 된 백엔드로 보내는 각도 응용 프로그램을 가지고 있습니다. 처리 결과는 새 탭에서 열려고하는 pdf 파일입니다.BLOB URL에 대한 사용자 정의 이름

이렇게 코드가 비슷 아래로

:

myService.getDocument(document) 
    .then(function(response) { 
    if (response.error) { 
     // Error handling goes here 
    } else { 
     var file = new BLob([response.data), {type: 'application/pdf'}); 
     var fileURL = URL.createObjectURL(file); 
     $window.open(fileURL, '_blank_'); 
    } 
    }); 

모든 것이 잘 작동하지만, 브라우저의 URL은 다음과 같이 몇 가지 무작위로 생성 된 문자열을 보여줍니다이 매우 보이지 않는 분명히

blob:http://localhost:3000/85cad96e-e44e-a1f9-db97a96ed3fe 

을 최종 사용자에게 좋으며 사용자에게 의미있는 것을 표시하고자하는 경우 다음과 같이 말하십시오.

blob:ftp://localhost:3000/my_document_name_or_whatever 

저는 JS에 익숙하며 Angular에 익숙하지 않습니다. HTML에 익숙하지 않습니다. 내 질문에 매우 순진하지 않기를 바랍니다.

입력 해 주셔서 감사합니다.

답변

7

짧은 대답, 수 없습니다.

입력 형식 = 파일을 통해 사용자가 업로드 한 파일의 경우 브라우저의 메모리, BLOB 또는 원본 파일에 대한 포인터를 가리키는 주소입니다.

이것은 어떻게 든 설계 상입니다. 동일한 Blob에서 여러 blobURL을 작성할 수 있습니다. 파일 이름을 URI로 사용한다면 그렇게 할 수 없습니다.

이론적으로 BlobURI로 리디렉션되는 페이지를 동적으로 생성 할 수 있어야하며이 리디렉션 페이지의 이름을 사용자의 이름으로 지정할 수 있습니다. 하지만 이것은 단지 이론 일 뿐이므로 직접 해보려하지 않았습니다.

개념의 거친 증거가 this plunker에서 볼 수

, 분명히, 동적 blobRename.html를 생성하고 원하는 하나의 이름을 변경하고 또한 콘텐츠 헤더의 강제해야합니다되도록 브라우저는 .html을 제거하려는 경우 html 페이지라고 생각합니다. 브라우저 플러그인을 필요로하는 pdf 파일에서는 작동하지 않지만 더 많은 작업을 수행하면 일 수 있습니다. 주위를 해킹 할 수 있습니다.

어쨌든, 난 그냥 임의의 URL을 보자, 점점 더 많은 웹 애플 리케이션이 훌륭한 API를 사용하여 사용자가 점점 익숙해집니다.

관련 문제