Я пытаюсь сохранить файл, отправив FormData
по ajax на контроллер, проблема в том, что мой ajax не работает, даже когда я использую функцию FormData
, чтобы получить все переменные в одной форме.
IЯ пытался использовать форму, но в таблице я не мог использовать теги формы, потому что моя кнопка находится в другом тд.Когда я использую его для всей таблицы, он тоже не работает, я создал FormData
, где я добавил все свои переменные, остальные работают, но изображение не работает.
index.cshtml:
<tr class="form" style="display:none">
<td class="name">
<input type="text" name="Jméno" value="" />
</td>
<td class="price">
<input type="number" name="Cena" value="" />
</td>
<td class="quantity">
<input type="number" name="Mnozstvi" value="" />
</td>
<td class="image">
<input type="file" id="fileOne" name="fileOne" runat="server" />
</td>
<td>
<button class="FirstSave" type="button" id="btnUpload">Uložit</button>
<button class="getBack">Zahodit</button>
</td>
</tr>
Вот мой JavaScript
$(".FirstSave").click(function () {
let file = document.getElementById('fileOne').file;
let form = new FormData;
form.append('Image', file);
form.append('Name', name);
form.append('Price', price);
form.append('Quantity', quantity);
$.ajax({
url: "Insert",
method: "POST",
cache: false,
processData: false,
data: form,
});
})
Получение и установка продуктов
public class Product
{
public string Name { get; set; }
public int Price { get; set; }
public int Quantity { get; set; }
public string ImageUrl { get; set; }
public HttpPostedFileBase Image { get; set; }
}
Контроллер продуктов
[HttpPost]
public ActionResult Insert(Product product)
{
HttpPostedFileBase file = product.Image;
if (file != null)
{
var fileName = Path.GetFileName(file.FileName);
product.ImageUrl = Path.Combine(Server.MapPath("~/Content/Images/Products/"), fileName);
file.SaveAs(product.ImageUrl);
}
return null;
}