SAS와 BLOB를 다운로드하려고합니다.Azure SAS 다운로드 BLOB
보기에 속한 모든 사용자 blob을 나열하고 있습니다. 사용자가 blob을 클릭하면 다운로드가 시작됩니다. 여기
@foreach (var file in Model)
{
<a href='@Url.Action("GetSaSForBlob", "Folder", new { blob = file })>
</a>
}
"폴더"컨트롤러에있는 내 두 가지 기능이 있습니다 : 여기
뷰입니다. 난 내보기 GetSasForBlob하기에서public void GetSaSForBlob(CloudBlockBlob blob)
{
var sas = blob.GetSharedAccessSignature(new SharedAccessBlobPolicy()
{
SharedAccessStartTime = DateTime.UtcNow.AddMinutes(-5),
SharedAccessExpiryTime = DateTime.UtcNow.AddHours(3),
Permissions = SharedAccessBlobPermissions.Read | SharedAccessBlobPermissions.Write,
});
DownloadFileTest(string.Format(CultureInfo.InvariantCulture, "{0}{1}", blob.Uri, sas));
//return string.Format(CultureInfo.InvariantCulture, "{0}{1}", blob.Uri, sas);
}
static void DownloadFileTest(string blobSasUri)
{
CloudBlockBlob blob = new CloudBlockBlob(new Uri(blobSasUri));
using (MemoryStream ms = new MemoryStream())
{
blob.DownloadToStream(ms);
byte[] data = new byte[ms.Length];
ms.Position = 0;
ms.Read(data, 0, data.Length);
}
}
을 통과해야한다 무엇? 현재 CloudBlockBlob BLOB는 null입니다.
DownloadFileTest 함수에서 코드가 누락 되었습니까?
GetSasForBlob에서 직접 DownloadFileTest를 호출해야합니까?
사람들이보기 외부에서 액세스하지 못하게하려면 어떻게이 두 기능을 보호 할 수 있습니까? 둘 다 정적 함수입니다. 나는 그것이 안전하지 않다고 생각하고 있나?
null 문제는 해결되었지만 다운로드 스트림의 작동 방식을 이해하지 못했습니다 .. Ive added : blob.DownloadToStream (Response.Stream); Response : Non static 필드, 메서드 또는 속성에 대해 개체 참조가 필요합니다. System.web.mvc.controller.response.get 현재이 코드 라인이 없으면 sasuri가 새 페이지로 나타나고 비어 있습니다 . 페이지를 변경하지 않고 파일을 다운로드하고 싶습니다. 어떻게 작동 할 때 실제로 작동합니까? – Reft
페이지를 변경하지 않고 blob을 다운로드하려면 SAS 토큰을 만들 때 내용 처리 헤더를 추가하고 (다른 질문에 게시 한 코드 샘플 참조) GetSaSForBlob 메소드에서 RedirectToAction (sasUrl)을 수행하십시오. 'DownloadFileTest' 메소드가 필요 없습니다. HTH. –
안녕하세요. 여기 내 "최종"코드를 볼 수 있습니다 : http : // stackoverflow.com/questions/23825246/azure-download-blob-sas-confirm-please 끔찍한 하하면 코멘트 해주세요 – Reft