Wie zum download von Dateien aus dem Azure-Blob-Speicher mit einem Download-Link

Machte ich einen Azure-Cloud-Service, wo Sie hochladen und löschen von Dateien auf der cloud-Speicher die Verwendung von Blobs. Ich schrieb erfolgreich eine Methode, wo Sie können das löschen der hochgeladenen blobs aus dem cloud-Dienst:

 public string DeleteImage(string Name)
    {
        Uri uri = new Uri(Name);
        string filename = System.IO.Path.GetFileName(uri.LocalPath);

        CloudBlobContainer blobContainer = _blobStorageService.GetCloudBlobContainer();
        CloudBlockBlob blob = blobContainer.GetBlockBlobReference(filename);

        blob.Delete();

        return "File Deleted";
    }
}

Hier ist auch der code für die Ansicht mit HTML:

@{
ViewBag.Title = "Upload";
}

<h2>Upload Image</h2>

<p>
@using (Html.BeginForm("Upload", "Home", FormMethod.Post, new { enctype = 
"multipart/form-data" }))
{
    <input type="file" name="image"/>
    <input type="submit" value="upload" />
}

</p>

<ul style="list-style-position:Outside;padding:0;">
@foreach (var item in Model)
{
<li>
    <img src="@item" alt="image here" width="100" height="100" />
    <a id="@item" href="#" onclick="deleteImage ('@item');">Delete</a>

</li>
}
</ul>

<script>
function deleteImage(item) {
    var url = "/Home/DeleteImage";
    $.post(url, { Name: item }, function (data){
        window.location.href = "/Home/Upload";
    });
}

</script> 

Nun möchte ich mal eine ähnliche Methode, so dass Sie herunterladen können, jeden blob aus dem Blick. Ich habe versucht, zu schreiben, die methode mit genau dem gleichen code aus dem löschen, aber anstelle von

blob.delete();

nun

blob.DownloadToFile(File);

Dies hat nicht funktioniert obwohl. Gibt es eine Möglichkeit, ändern Sie die delete-Methode, so lädt er die gewählten blob, anstatt es zu löschen?


Zusätzliche Info

Hier ist der code von DownloadToFile Methode:

[HttpPost]
    public string DownloadImage(string Name)
    {
        Uri uri = new Uri(Name);
        string filename = System.IO.Path.GetFileName(uri.LocalPath);

        CloudBlobContainer blobContainer = 
_blobStorageService.GetCloudBlobContainer();
        CloudBlockBlob blob = blobContainer.GetBlockBlobReference(filename);

        blob.DownloadToFile(filename, System.IO.FileMode.Create);


        return "File Downloaded";
    }

Der name ist nur der gesamte name der Datei, die hochgeladen wird. Mit dem Namen ist der Weg der Daten.

Die Exception die ich bekomme, ist:

UnauthorizedAccessException: Der Zugriff auf den Pfad "C:\Program Files\IIS Express\Eva Passwort.docx" verweigert.]

Ich denke, dass das problem ist, dass meine Anwendung nicht über einen Pfad zum speichern der Datei. Gibt es eine Möglichkeit zu erhalten einen dialog, wo kann ich für den Weg zu sparen?

Können Sie teilen Sie Ihre DownloadToFile code ? und erwähnen, welche Fehlermeldung Sie bekommen.
Bitte teilen Sie einige Beispiele von "Name" und "Dateiname", und die details der Ausnahme, die Sie trafen, oder wir sind nicht in der Lage zu helfen, mit aktuellen Informationen.
Ich habe das DownloadToFile Methode unten.

InformationsquelleAutor Minh Anh Le Quoc | 2017-08-01

Schreibe einen Kommentar