Comment télécharger des fichiers à partir d'Azure Blob Storage avec un Lien de Téléchargement

J'ai fait un Azure Cloud Service, où vous pouvez télécharger et supprimer des fichiers sur le cloud de stockage à l'aide de Gouttes. J'ai écrit avec succès une méthode où vous pouvez supprimer le téléchargement de gouttes à partir du nuage de service:

 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";
    }
}

Voici également le code pour Afficher le 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> 

Maintenant, je veux écrire une semblable méthode de sorte que vous pouvez télécharger chaque goutte de la Vue. J'ai essayé d'écrire la methode en utilisant exactement le même code à partir de la supprimer, mais au lieu de

blob.delete();

maintenant

blob.DownloadToFile(File);

Cela ne fonctionnait pas bien. Est-il possible de changer la méthode de suppression de sorte qu'il télécharge le choisi blob au lieu de la supprimer?


Ajout D'Infos

Voici le code de DownloadToFile méthode:

[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";
    }

Le nom est juste l'ensemble du nom de fichier qui est téléchargé. Nom de fichier est le chemin de données.

L'Exception que je reçois est:

UnauthorizedAccessException: L'accès au chemin "C:\Program Files\IIS Express\Eva Passwort.docx" est refusé.]

Je pense que le problème c'est que mon application n'est pas un chemin d'accès pour enregistrer le fichier. Est-il possible d'obtenir une boîte de dialogue où je peux choisir le chemin pour enregistrer?

  • Pouvez-vous partager votre DownloadToFile code ? et de mentionner quelle est l'erreur que vous obtenez.
  • Merci de partager quelques exemples de "Nom" et "nom de fichier", et les détails de l'exception que vous avez rencontré, ou nous ne sommes pas en mesure de fournir de l'aide avec des informations actuelles.
  • J'ai posté le DownloadToFile méthode ci-dessous.