سلام
من برای آپلود بصورت Ajax طبق روش زیر عمل کردم
function RunUploadAks() { if (window.FormData !== undefined) { var fileUpload = $("#UploadImage").get(0); var files = fileUpload.files; var fileData = new FormData(); for (var i = 0; i < files.length; i++) { fileData.append(files[i].name, files[i]); } var filenameis=$("#STDID").val(); fileData.append('filenameis', filenameis); $.ajax({ url: '@Url.Action("UploadImageFiles", "StudentBases")', type: "POST", contentType: false, // Not to set any content header processData: false, // Not to process data data: fileData, success: function (result) { alert("عکس با موفقیت بصورت موقت ارسال شد"); var filenameis = result; $("#Image34").val(filenameis); }, error: function (err) { alert(err.statusText); } }); } else { alert("FormData is not supported."); } }
این هم کد کنترلر:
[HttpPost] public ActionResult UploadImageFiles() { string ResultFile = null; if (Request.Files.Count > 0) { try { HttpFileCollectionBase files = Request.Files; for (int i = 0; i < files.Count; i++) { var FolderPath = Server.MapPath("~/Student/img/"+ "kaveh" + "/"); Directory.CreateDirectory(FolderPath); string path = AppDomain.CurrentDomain.BaseDirectory + "Student/img/" + "kaveh" + "/"; HttpPostedFileBase file = files[i]; string fname; if (Request.Browser.Browser.ToUpper() == "IE" || Request.Browser.Browser.ToUpper() == "INTERNETEXPLORER") { string[] testfiles = file.FileName.Split(new char[] { '\\' }); fname = testfiles[testfiles.Length - 1]; ResultFile = fname; } else { Guid Privateid = Guid.NewGuid(); fname = Privateid + file.FileName; ResultFile = fname; } // Get the complete folder path and store the file inside it. fname = Path.Combine(Server.MapPath("~/Student/img/"+ "kaveh" + "/"), fname); file.SaveAs(fname); } // Returns message that successfully uploaded return Json(ResultFile); } catch (Exception ex) { return Json("Error occurred. Error details: " + ex.Message); } } else { return Json("No files selected."); } }
میخام فایل داخل فولدری که من انتخاب میکنم آپلود بشه!
الان تو کنترلر فولدر kaveh رو دادم و اوکیه و فولدرو اگه نباشه میسازه
میخام این اسم بصورت data ارسال بشه در حقیقت میخام یکی از فیلدها که کد ملی یا شماره دانشجوییه ارسال و فولدری به اسم اون ایجاد کنم!!!!
من این خط هارو زمان ارسال استفاده کردم
var filenameis=$("#STDID").val(); fileData.append('filenameis', filenameis);
ولی نمیدونم اینجوری دیتا ارسال میشه یا نه؟؟؟
اگه میشه چجوری باید دریافت کنم
اگر هم مسیری که رفتم اشتباهه مسیر درست رو بگین لطفا
jQuery(document).ready(function ($) { $('#loginButton').click(function (e) { e.preventDefault(); var formData = new FormData(); var totalFiles = document.getElementById("FileUpload1").files.length; var file = document.getElementById("FileUpload1").files[0]; formData.append("FileUpload", file); alert(totalFiles); alert(file); $.ajax({ type: "POST", url: '/Manage/GetPartialView', data: formData, dataType: 'json', contentType: false, processData: false, success: function (result) { alert(result); }, }); }); });
میتونید در قسمت Data پارامتر های دیگه ای هم بفرستید
سمت کنترلر (سرور) چجوری دریافت کنم Data رو؟
توسط ورودی اکشن
همنام ورودی قرار دهید
data: {file:formData,name :'Iman'}
file و name نام ورودی ها هستند
اوکی پیدا کردم
var filenamein = Request.Form["filenameis"];
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)