2016-11-02 7 views
-1

Вот суть того, что я пытаюсь достичь:

  • Захват веб-камеры изображение с точки зрения редактирования. (рабочий)
  • Присвоить изображению имя файла и путь. (рабочий)
  • Сохраните изображение в папке с изображениями. (рабочий)
  • Сохраните путь к изображению в базе данных. (Не работает)

Вот мой контроллер Capture:MVC веб-камера захвата изображения, сохранить путь к файлу изображения в базу данных

 public void Capture(String FileLocation) 
    { 
     //var FileLocation = Server.MapPath("~/Images/test.jpg"); 
     var stream = Request.InputStream; 
     string dump; 

     using (var reader = new StreamReader(stream)) 
      dump = reader.ReadToEnd(); 


     if (System.IO.File.Exists(FileLocation)) 
     { 
      System.IO.File.Delete(FileLocation); 
      System.IO.File.WriteAllBytes(FileLocation, String_To_Bytes2(dump)); 
     } 
     else System.IO.File.WriteAllBytes(FileLocation, String_To_Bytes2(dump)); 


     return; 

    } 

А вот Edit контроллер:

[HttpPost] 
    [ValidateAntiForgeryToken] 
    public ActionResult Edit(TrappingEvent trappingevent) 
    { 

     if (ModelState.IsValid) 
     { 


      db.Entry(trappingevent).State = EntityState.Modified; 
      db.SaveChanges(); 

      return RedirectToAction("Index"); 
     } 

     ViewBag.PersonId = new SelectList(db.People, "Id", "First_Name", trappingevent.PersonId); 
     return View(trappingevent); 
    } 

Из моего ограниченного понимания, было бы неплохо, чтобы пройти путь к файлу как переменную от элемента Capture void до контроллера для привязки к модели.

Благодарим за помощь.

ответ

0

Его работа! Хорошо, я сделал это круговым путем и до сих пор рад услышать предложения.

Heres суть:

  • при нажатии на кнопку съемки я запустить функцию:

    function CaptureAndAssignText() { 
    var Div = document.getElementById("ImagePath");//ImagePath is the field 
    // I want to bind to the model. 
    
    newText = "ID_" + @Model.Id + ".jpg";//Here I grab the Id of 
    //the current model to use as the file name 
    
    Div.value = newText;//Assign the file name to the input 
    //field ready for submission. 
    
    webcam.capture();//Run the capture function 
    } 
    
  • Здесь функция захвата (довольно стандартный - кто-то может сказать мне, если мне нужно документ готов к этому?)

    $(document).ready(function() { 
             $("#Camera").webcam({ 
              width: 320, 
              height: 240, 
              mode: "save", 
              swffile: "@Url.Content("~/Scripts/jscam.swf")", 
              onTick: function() { }, 
              onSave: function() { 
              }, 
              onCapture: function() { 
               webcam.save("@Url.Action("Capture", "TrapActivity", new { id = @Model.Id , pid = @Model.PersonId})"); 
              }, 
              debug: function() { }, 
              onLoad: function() { } 
             }); 
            }); 
    

Вот мой контроллер, изменен, чтобы принять модель ID в виде строки (включили строку в функции Bytes для удобства):

public ActionResult Capture(string ID) 
    { 
     var path = Server.MapPath("~/Images/ID_" + ID + ".jpg"); 

     //var path1 = "~/Images/test.jpg;"; 



     var stream = Request.InputStream; 
     string dump; 

     using (var reader = new StreamReader(stream)) 
      dump = reader.ReadToEnd(); 


     if (System.IO.File.Exists(path)) 
     { 
      System.IO.File.Delete(path); 
      System.IO.File.WriteAllBytes(path, String_To_Bytes2(dump)); 
     } 
     else System.IO.File.WriteAllBytes(path, String_To_Bytes2(dump)); 


     return View(ID); 

    } 

    private byte[] String_To_Bytes2(string strInput) 
    { 
     int numBytes = (strInput.Length)/2; 
     byte[] bytes = new byte[numBytes]; 

     for (int x = 0; x < numBytes; ++x) 
     { 
      bytes[x] = Convert.ToByte(strInput.Substring(x * 2, 2), 16); 
     } 

     return bytes; 
    } 

Теперь, как только захват была нажата. Форма может быть представлена ​​так же, как если бы вы отправляли строго типизированную форму.

Существует потенциальная проблема с этим методом

  • Этот способ позволяет только одно изображение будет сохранено.
  • Im вид хранения пути к файлу по-настоящему странным образом.

Im более чем открыт для предложений.

Смежные вопросы