2016-04-16 9 views
0

Ich habe einen öffentlichen Dropbox-Link, den ein Benutzer in ein Textfeld eingibt. Sobald der Benutzer auf einen Link klickt, sollte die Datei an den Speicherort auf dem Server übertragen werden. Ich frage die Dropbox-Foren und sie erwähnten, dass die Dropbox-API nicht notwendig ist, da es sich um eine öffentliche Datei handelt.WebClient Bild von URL auf Server herunterladen C#

https://www.dropbox.com/s/5y100bsknq7swdw/TestDoc.pdf?dl=1

-Client-Site

<div id="testarea"></div> 
    <div> 
    @Html.TextBoxFor(x => x.HTML_text, new { id = "tbURL" }) 
    <input id="btnSubmit" type="button" value="Submit" onclick="btnSubmitClick()"/> 
    </div> 

    <script> 

     function btnSubmitClick() 
     { 
     $.ajax({ 
     url: "/Home/SaveDocument", 
     datatype: "text", 
     data: { 'returnUrl': $('#tbURL').val() }, 
     type: "POST", 
     success: function (data) { 
      $('#testarea').html(data); 
     }, 
     error: function() { 
      $("#testarea").html("ERROR"); 
     } 
     }); 

     } 
     </script> 

Server Side

 public string SaveDocument(string returnUrl) 
     { 
      using (var client = new WebClient()) 
      { 
      //Not Working 
       client.DownloadFile(returnUrl, "Test.pdf"); 
      }    
      return String.Format("Test03: String1={0};", returnUrl); 
     } 

Antwort

0

Die DownloadFile Methode funktioniert so lange, wie Sie einen vollständig qualifizierten Dateinamen angeben, die Sie nicht haben. Wenn Sie beispielsweise "Test.pdf" durch "C:\\Test.pdf" ersetzen, wird die Datei korrekt heruntergeladen und gespeichert. Sie müssen natürlich sicherstellen, dass der Benutzerkontext, der den serverseitigen Code ausführt, über die Berechtigung zum Schreiben in den angegebenen Pfad verfügt.

Wenn Sie die Datei in einen Ordner relativ zum virtuellen Verzeichnis Ihrer Anwendung schreiben möchten, können Sie die Methode Server.MapPath verwenden, um den Ordnerpfad abzurufen und dann den Dateinamen mit dem Ende zu verketten.

Verwandte Themen