2016-06-10 6 views
0

우리는 수천 개의 파일을 Azure blob 저장소에 저장합니다. 이러한 파일은 모든 유형이 될 수 있지만 PDF 파일, 이미지 및 Excel이 가장 보편적입니다. 앵커 태그에 BLOB의 URI를 사용하면 시스템 사용자가 Azure에서 직접 사용자 컴퓨터로 파일을 다운로드 할 수 있습니다. 모두 좋은.Azure blob storage - 리소스를 다운로드 할 때 이름을 제어합니다.

blob 이름을 파일 자체의 이름으로 지정하여 사용자가 파일을 다운로드 할 때 원래 파일 이름이 손상되지 않도록하고 싶습니다. 그러나 컨테이너에서 필연적 인 파일 이름 충돌을 고려해야합니다. BLOB 이름에 GUID를 사용하는 것은 실행 가능한 솔루션이지만 사용자가 파일을 다운로드하기 위해 클릭하면 파일 이름이 GUID BLOB 이름 (원래 파일 이름과 비교)이됩니다.

BLOB 이름에 GUID를 사용하는 방법이 있지만 사용자가 파일을 다운로드하기 위해 클릭하면 반환 된 파일의 원래 파일 이름은 무엇입니까? 우리는 우리 서버에 파일을 다운로드하고 적절하게 명명 된 파일을 사용자에게 스트리밍 할 수 있음을 알고 있지만 파일 다운로드를 위해 우리 웹 서버에서 부하를 제거하려고 노력하고 있습니다.

올바른 파일 이름으로 파일을 반환 할 수 있도록 BLOB 구성 설정이 있습니까? blob에 MIME 유형을 설정할 수 있으며 파일 이름 부분에 대해 비슷한 설정을 찾고있었습니다.

답변

1

블롭 이름에 대한 GUID를 사용하는 방법이 있나요하지만 사용자 클릭하여 파일을 다운로드 할 때, 반환 된 파일은 원래 파일 이름이? 파일을 서버로 다운로드하고 라는 이름의 파일을 사용자에게 스트리밍 할 수 있지만 파일 다운로드에 대해서는 웹 서버에서 로드를 유지하려고합니다.

블롭의 속성을 Content-Disposition 속성으로 사용할 수 있습니다. 당신이 할 수있는 것은 GUID로 BLOB의 이름을 설정하지만 BLOB의 content-disposition 속성을 attachment; filename="original-file-name"으로 설정합니다. 파일을 항상 다운로드하려면이 속성을 영구적으로 설정할 수 있습니다. 그러나 파일을 다운로드 할 때만이 이름을 설정하려면 BLOB에 Read 권한으로 Shared Access Signature을 만들고이 헤더를 덮어 쓸 수 있습니다. 나는 이것에 대해 my blog sometime ago에 썼다. 내 블로그 게시물에서 :

는 사용자가 스토리지 계정에서 파일을 다운로드 할 시나리오를 가정하지만 당신은 그 파일을 사용자 친숙한 이름을주고 싶어. 또한 브라우저에 파일을 표시하는 대신 파일을 저장하라는 메시지가 사용자에게 표시되기를 원합니다 (예 : 브라우저에서 PDF 파일이 자동으로 열림). 을 수행하려면 먼저 에서 Blob 스토리지를 서버로 가져온 다음 "Content-Disposition"헤더를 설정하여 응답 스트림에 해당 파일 의 데이터를 작성해야합니다. 실제로 지난 주에 동일한 솔루션을 구현하는 데 많은 시간을 할애했습니다. 이 기능이 저장 장치 자체에 있음을 알았을 경우에만 :).

이제 그럴 필요가 없습니다. 당신이 할 수있는 일은 blob에 content-disposition 속성을 지정하고 그것을 "attachment"로 설정하는 것입니다. filename = yourdesiredfilename "이며 사용자가 브라우저를 통해 에 액세스하려고하면 파일 다운로드 옵션이 표시됩니다.

이제 인라인을 표시하고 다운로드 할 수있는 이미지 파일로 표시 할 이미지 파일이 무엇인지 물어볼 수 있습니다. 매우 유효한 요구 사항. 글쎄, 스토리지 팀의 현명한 사람들은 이미 에 대해 생각했습니다. :) content-disposition을 blob 속성으로 설정할 수있을뿐만 아니라 SAS URL에서이 속성을 무시할 수 있습니다 ( 에 대한 자세한 내용은 약간 있음).

관련 문제