2016-04-16 2 views
0

У меня есть общедоступная ссылка на Dropbox, которую пользователь вводит в текстовое поле. После того, как пользователь нажимает на ссылку, файл должен перейти в местоположение на сервере. Я спрашиваю форумы Dropbox, и они упомянули, что Dropbox API не нужен, поскольку является общедоступным.WebClient download image from URL to server C#

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

Клиент сайта

<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> 

стороне сервера

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

ответ

0

Метод DownloadFile будет работать так долго, как вы укажете полное имя файла, который Вы не имеете. В качестве примера, заменив "Test.pdf" на "C:\\Test.pdf", вы загрузите и сохраните файл правильно. Вы, конечно же, должны убедиться, что пользовательский контекст, выполняющий серверный код, имеет разрешение на запись по указанному пути.

Если вы хотите записать файл в папку относительно виртуального каталога приложения, вы можете использовать метод Server.MapPath, чтобы получить путь к папке, а затем конкатенировать имя файла до конца.