2013-03-26 1 views
1

Я написал код загрузки файла, который отлично работает для загрузки файла и сохранения его в папке. Я включил функцию, которая позволяет пользователю загружать URL-адрес файла PDF, а файл с URL-адреса должен быть загружен и сохранен. Код:Как загрузить файл, где находится путь к файлу

function loadURL(box) { 
     var box = dhtmlx.modalbox({ 
      title: "Load URL", 
      text: "<div id='form_in_box'><div>Enter the URL of PDF file <hr/><div><div><textarea id='file' style='width: 400px; height: 27px;'></textarea></div><span class='dhtmlx_button'><input type='submit' value='Load URL' style='width: 86px' onclick='save_file(this)'></span><span class='dhtmlx_button'><input type='button' value='Cancel' onclick='close_file(this)' style='width:80px;'></span></label></div></div>", 
      width: "300px" 
     }) 
    } 

function save_file(box) { 
     var file = document.getElementById('file'); 
     if (file.value == "") { 
      alert("Choose a file to upload"); 
      return false; 
     } 
     dhtmlx.modalbox.hide(box); 

     var fd = new FormData(); 
     fd.append('file', file.files[0]); 
     var xhr = new XMLHttpRequest(); 
     xhr.open('POST', '/FileUpload/Upload', true); 
     xhr.onreadystatechange = function() { 
      if (xhr.readyState == 4 && xhr.status == 200) { 
       alert('File successfully uploaded to the server'); 
      } 
     }; 
     xhr.send(fd); 

} Если я использую приведенный выше код для load_URL я получаю сообщение об ошибке, как: TypeError: file.files не определен fd.append ('файл', file.files [0]) ;

ответ

1

Не используйте API файлов (который вы можете использовать для чтения локального файла из ввода файла). Просто отправьте URL-адрес на сервер и получите его код на стороне сервера.

0

Используйте класс WebClient для загрузки файла с удаленного URL-адреса. Вы можете использовать метод DownloadFile для загрузки файла с удаленного URL-адреса.

public ActionResult DownloadFile(string fileName) 
{ 
    if (!String.IsNullOrEmpty(fileName)) 
    { 
     using (WebClient wc = new WebClient()) 
     {  
      string targetPath = @"C:\YourFolder\thatUniqueFileName.pdf";   
      wc.DownloadFile(fileName,targetPath); 

      return RedirectToAction("Downloaded"); //PRG pattern 
     } 
    } 
    return VieW(); 
} 

Если вы хотите сохранить файлы в App_Data папку проекта, вы можете изменить значение TargetPath переменные, как этот

string targetPath = HttpContext.Server.MapPath("~/App_Data/yourPdf.pdf"); 

Вы можете разобрать fileUrl и получить имя файла от этого и добавить к нему уникальный идентификатор (чтобы избежать перезаписи разных файлов с тем же именем) и использовать это для сохранения файлов.