2015-06-13 2 views
0

Я написал элемент управления файловой системой в asp.net mvc.But, так как теперь логика, что я делаю, я загружаю файл excel на сервер локально, а затем обрабатываю данные и толкаю в базу данных oracle. Но некоторые серверы из-за проблем с разрешениями, я не могу извлекать данные с загруженного сервера или загружать на сервер в любом случае. Я хотел бы иметь логику, которая преобразует загрузку файлов в поток или то, что когда-либо загружается на сервер локально. Я не знаю, могу ли я реализовать HttpPostedFileBase.inputstream, если да, то как я могу его реализовать здесь?Управление загрузкой файлов в asp.net mvc

VIEW

@using (Html.BeginForm("Upload", "mnis", FormMethod.Post, new { enctype = "multipart/form-data" })) 
    { 
     @*<div> 
     <label for="file">Filename:</label></div> 
     <div class="uploadfirst"> 
     <input type="file" name="file" id="file" /></div> 

     @Html.Label("lbl", "PSITE_SLNO"); 
     <input id="Text1" name="txtsln" type="text" /> 
     <div class="upload"> 
     <input value="Submit" type="submit" /></div>*@ 

     <table> 
      <tr><td><label for="file">Filename:</label></td><td><input type="file" name="file" id="file" /></td></tr> 
      <tr><td></td><td class="positions"><input value="Submit" type="submit" /></td></tr> 
     </table> 

    } 

CONTROLLER 
[HttpPost] 
     public ActionResult Upload(HttpPostedFileBase file) 
     { 
      try 
      { 

       if (file.ContentLength > 0) 
       { 

        int slno = (int)(Session["slnum"]); 
        string st = file.FileName.ToString(); 
        //st = Server.MapPath("~/")+st; 
        st = Path.Combine(Server.MapPath("~/"), st); 
        file.SaveAs(st); 
        //Start(st, slno); 

        Task.Factory.StartNew(() => 
        { 
         Thread.CurrentThread.Name = "Maximo thread"; 

         Start(st, slno); 
        }); 
        var fileName = Path.GetFileName(file.FileName); 
        var path = Path.Combine(Server.MapPath("~/App_Data/uploads"), fileName); 
        RedirectToAction("Index"); 
        // file.SaveAs(path); 
       } 
      } 
+0

я отправил ответ попробовать вон тот –

ответ

1

попробовать это:

Вы можете получить поток от InputStream из Fileuplpad контроля, то вы можете преобразовать поток в байтовый массив для сохранения в базе данных

Stream stream = file.PostedFile.InputStream; 
    byte[] byteArray = ReadFully(stream); 



public static byte[] ReadFully(Stream input) 
    { 
     byte[] buffer = new byte[input.Length]; 
     using (MemoryStream ms = new MemoryStream()) 
     { 
      int read; 
      while ((read = input.Read(buffer, 0, buffer.Length)) > 0) 
      { 
       ms.Write(buffer, 0, read); 
      } 
      return ms.ToArray(); 
     } 
    } 
Смежные вопросы