باسلام
آپلود فایلو بصورت زیر نوشتم، وقتی تو سیستم خودم کنترل میکنم کاملا درسته ولی وقتی پابلیش میکنم برنامه رو و فایل رو انتخاب میکنم و ارسال عکس رو میزنم پیام Not Found میده نمیدونم برای چی!!!
تابع برای آپلود به صورت زیر :
function RunUploadFile() { // Checking whether FormData is available in browser if (window.FormData !== undefined) { var fileUpload = $("#FileUpload2").get(0); var files = fileUpload.files; // Create FormData object var fileData = new FormData(); // Looping over all files and add it to FormData object for (var i = 0; i < files.length; i++) { fileData.append(files[i].name, files[i]); } // Adding one more key to FormData object fileData.append('ProfessorID', 'kaveh'); $.ajax({ url: '/Folder/UploadFilesToFolder', type: "POST", contentType: false, // Not to set any content header processData: false, // Not to process data data: fileData, success: function (result) { $("#FileName").val(result); alert("فایل انتخابی با موفقیت ارسال شد"); }, error: function (err) { alert(err.statusText); } }); } else { alert("FormData is not supported."); } }
قسمت FileUpload
<tr> <td>انتخاب فایل مورد نظر</td> <td>@Html.Action("ViewFileTypeForUpload", "Folder")</td> <td><input type="file" id="FileUpload2" /></td> <td> <a class=" btn btn-s-md btn-warning btn-rounded" id="btnUploadFile">بررسی و ارسال</a> </td> <td> <a class=" btn btn-s-md btn-success btn-rounded" id="BtnSaveFile">ثبت در پرونده</a> </td> </tr>
سمت کنترلر هم بصورت زیر :
[HttpPost] public ActionResult UploadFilesToFolder() { string ResultFile = null; // Checking no of files injected in Request object if (Request.Files.Count > 0) { try { // Get all files from Request object HttpFileCollectionBase files = Request.Files; for (int i = 0; i < files.Count; i++) { string path = AppDomain.CurrentDomain.BaseDirectory + "FileFolder/"; //string filename = Path.GetFileName(Request.Files[i].FileName); HttpPostedFileBase file = files[i]; string fname; // Checking for Internet Explorer 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("~/FileFolder/"), 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."); } }
وقتی پابلیش کردم فکر کنم این قسمت اجرا میشه تو تابع RunFileUpload :
error: function (err) { alert(err.statusText); }
چون پیام خطای Not Found رو من تو برنامه اصلا تعریف نکردم!!!
مثل همیشه منتظر راهنماییتونم
مشکلم برطرف شد
همون جور که حدس میزدم مشکل اینجا بود
$.ajax({ url: '/Arshiv/Folder/UploadFilesToFolder', type: "POST", contentType: false, // Not to set any content header processData: false, // Not to process data data: fileData, success: function (result) { $("#FileName").val(result); alert("فایل انتخابی با موفقیت ارسال شد"); }, error: function (err) { alert(err.statusText); } });
اسم برنامه که پابلیش کردم رو به url اضافه کردم و به ایجکس ارسال کردم
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)