2012-10-24 7 views
5

나는 사용자가 Azure Blob 저장소에 저장된 사진을 업로드 할 수있는 응용 프로그램을 가지고 있습니다. 사용자는 또한 이러한 사진을 볼 수 있습니다. 이미지를 보려면 응용 프로그램에서 기본 다운로드 위치로 이미지를 다운로드해야합니다. 현재 업로드가 완벽하게 작동합니다. 하지만 Azure API에서 찾은 다운로드 기능은 아무 것도하지 않는 것 같습니다. 또한이 기능은 데스크톱/랩톱뿐만 아니라 다른 기본 디렉터리가있는 모바일 장치에서 작동해야하기 때문에 다운로드 위치를 지정할 수 없습니다.파일을 Azure Blob 저장소에서 다운로드

이것은 단순해야하지만 나에게 도움이 될만한 것을 찾을 수없는 것 같습니다.

CloudBlobContainer container = blobClient.GetContainerReference("photos"); 
CloudBlob blob = container.GetBlobReference(photo.BlobUrl); 
//copy blob from cloud to local gallery 
blob.DownloadToFile(photo.ImageName); 

blob.DownloadToFile(photo.ImageName);는 서버 요청이 발생하지만 파일이 다운로드되지 일명 아무것도, 발생하지 : 여기

내 코드의 샘플입니다.

+1

'사진'개체에 대한 참조가 없습니까? –

답변

5

클라이언트가 BLOB 저장소에서 직접 파일을 다운로드하고 내장 브라우저 기능을 저장하기 위해 사용할 수 없습니다 이유라도? 파일이 비공개 인 경우 SAS 서명을 생성하는 것이 매우 쉽습니다. 그러면 서버에서 다운로드가 오프로드되어 오버 헤드가 제거됩니다.

+2

어떻게 할 수 있습니까? – Demodave

3

이 코드에서 무엇을 기대합니까?하지만 다른 플랫폼의 경우에는 작동하지 않습니다. 대신 DownloadToStream 메서드를 사용하는 것이 좋습니다. 그런 다음 스트림에서 수행 할 작업을 결정할 수 있습니다. 예를 들어 사용자에게 파일 저장 위치를 ​​묻습니다. 여기

+0

링크가 죽었습니다. – Eric

+0

을 수정하십시오. 특히 @Eric! – astaykov

3

:

당신은 어디에 당신이 원하는 파일 이름을 저장하는 방법을 알려줄 필요가
blob.DownloadToFile(photo.ImageName); 

:

blob.DownloadToFile("C:\mycutepuppy.jpg"); 

당신은 그림을 System.Environment.SpecialFolder 열거를 사용할 수를 현재 시스템을 기반으로 폴더를 확장 한 다음 이미지 이름을 원하는대로 추가하십시오.

var imgPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory), + photo.ImageName); 

blob.DownloadToFile(imgPath); 

이 사용자의 바탕 화면 디렉토리가 올바른 경로로 이미지를 저장합니다 : 여기

은보다 완벽한 예입니다. 다음은 특수 폴더에 대한 enum에 대한 설명서입니다.

http://msdn.microsoft.com/en-us/library/system.environment.specialfolder.aspx

+0

사용자가 경로를 선택할 수 있도록하려면 어떻게해야합니까? –

+0

다음과 같이 이미지 이름 앞에 경로를 추가합니다. string userPath = "Whatever they picked"; 그래서 그것은 var 일 것입니다. imgPath = userPath + photo.ImgName; 디렉토리를 저장하려고 시도하기 전에 디렉토리가 존재하는지 확인할 수도 있습니다. – ElvisLives

관련 문제