ASP.NET MVC 使用Ajax Post 檔案到Controller

ASP.NET MVC 使用Ajax Post 檔案到Controller

HTML CODE:

  1. <form id="myForm">
  2. <!-- 資料列1 -->
  3. <input type="text" name="formDataList[0].Field1" value="Value1A" /> <!-- 為了讓Controller接值可以對應, 一定要相同參數名稱[formDataList]及流水號, 且流水號一定要由0開始 -->
  4. <input type="text" name="formDataList[0].Field2" value="Value1B" />
  5. <input type="file" name="formDataList[0].File" />
  6. <!-- 資料列2 -->
  7. <input type="text" name="formDataList[1].Field1" value="Value2A" />
  8. <input type="text" name="formDataList[1].Field2" value="Value2B" />
  9. <!-- 沒有檔案 -->
  10. <!-- 資料列3 -->
  11. <input type="text" name="formDataList[2].Field1" value="Value3A" />
  12. <input type="text" name="formDataList[2].Field2" value="Value3B" />
  13. <input type="file" name="formDataList[2].File" />
  14. <button type="button" onclick="submitForm()">提交</button>
  15. </form>
  16. <script src="https://code.jquery.com/jquery-3.6.4.min.js"></script>
  17. <script>
  18. function submitForm() {
  19. var formData = new FormData($('#myForm')[0]);
  20. //這裡可以額外加其他資料
  21. formData.append('A001', 'A001');
  22. $.ajax({
  23. url: '/YourController/YourAction',
  24. type: 'POST',
  25. data: formData,
  26. contentType: false,
  27. processData: false,
  28. success: function (data) {
  29. // 處理成功的回應
  30. },
  31. error: function (error) {
  32. // 處理錯誤
  33. }
  34. });
  35. }
  36. </script>

Controller:

  1. public class YourFormDataModel
  2. {
  3. public string Field1 { get; set; }
  4. public string Field2 { get; set; }
  5. public HttpPostedFileBase File { get; set; }
  6. }
  7. [HttpPost]
  8. public ActionResult YourAction(List<YourFormDataModel> formDataList, string A001)
  9. {
  10. try
  11. {
  12. // formDataList 包含多筆資料清單,每筆清單有三個欄位
  13. foreach (var formData in formDataList)
  14. {
  15. string value1 = formData.Field1;
  16. string value2 = formData.Field2;
  17. // 如果有檔案,處理檔案,例如保存到伺服器上
  18. if (formData.File != null && formData.File.ContentLength > 0)
  19. {
  20. string fileName = Path.GetFileName(formData.File.FileName);
  21. string filePath = "/YourUploadDirectory/" + fileName;
  22. formData.File.SaveAs(Server.MapPath(filePath));
  23. // 在這裡可以根據需要處理檔案或儲存檔案路徑到數據庫
  24. }
  25. // 在這裡處理其他表單元素的邏輯,例如儲存到數據庫
  26. }
  27. // 其他邏輯...
  28. return Json(new { success = true, message = "資料處理成功" });
  29. }
  30. catch (Exception ex)
  31. {
  32. return Json(new { success = false, message = "資料處理失敗:" + ex.Message });
  33. }
  34. }

若Form裡除了明細資料外, 還有其他個別欄位值, 也可以透過request.form["object-name"]取得內容。

留言

這個網誌中的熱門文章

ORA-12514: TNS: 監聽器目前不知道連線描述區中要求的服務

Oracle 工作排程 DBMS_JOB 筆記

Oracle 例外控制(Exception Control)