فایل آپلود در Web API با استفاده از jQuery
دوشنبه 12 مهر 1395در این مقاله قصد داریم نحوه آپلود کردن فایل را با استفاده از Web API و با کمک Jquery را توضیح دهیم.درادامه با مفاهیم Web API آشنا می شویم.
- آشنایی با Web API
- نحوه ذخیره و نمایش داده ها با Web API در ASP.NET MVC5
- نحوه ارسال داده در Web API با استفاده از Jquery
پیاده سازی API Service برای آپلود فایل در سرور
1.یک API Controller ، به نام UploadapiController ایجاد می کنیم .
2.یک پوشه به نام UploadFiles در Solution ایجاد می کنیم .
2.کدهای زیر را جایگزین کدهای Controllerای که ایجاد کرده ایم،می کنیم .
1. using System; 2. using System.Collections.Generic; 3. using System.IO; 4. using System.Linq; 5. using System.Net; 6. using System.Net.Http; 7. using System.Threading.Tasks; 8. using System.Web; 9. using System.Web.Http; 10. namespace WebApiExample.Controllers { 11. public class UploadapiController: ApiController { 12. public Task Post() { 13. List savedFilePath = new List(); 14. if (!Request.Content.IsMimeMultipartContent()) { 15. throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType); 16. } 17. string rootPath = HttpContext.Current.Server.MapPath("~/UploadedFiles"); 18. var provider = new MultipartFileStreamProvider(rootPath); 19. var task = Request.Content.ReadAsMultipartAsync(provider). 20. ContinueWith(t => { 21. if (t.IsCanceled || t.IsFaulted) { 22. Request.CreateErrorResponse(HttpStatusCode.InternalServerError, t.Exception); 23. } 24. foreach(MultipartFileData item in provider.FileData) { 25. try { 26. string name = item.Headers.ContentDisposition.FileName.Replace("\"", ""); 27. string newFileName = Guid.NewGuid() + Path.GetExtension(name); 28. File.Move(item.LocalFileName, Path.Combine(rootPath, newFileName)); 29. Uri baseuri = new Uri(Request.RequestUri.AbsoluteUri.Replace(Request.RequestUri.PathAndQuery, string.Empty)); 30. string fileRelativePath = "~/UploadedFiles/" + newFileName; 31. Uri fileFullPath = new Uri(baseuri, VirtualPathUtility.ToAbsolute(fileRelativePath)); 32. savedFilePath.Add(fileFullPath.ToString()); 33. } catch (Exception ex) { 34. string message = ex.Message; 35. } 36. } 37. return Request.CreateResponse(HttpStatusCode.Created, savedFilePath); 38. }); 39. return task; 40. } 41. } 42. }
افزودن Controller برای نمایش فایل آپلود
1 . بر روی پوشه Controllers کلیک راست کرده و در قسمت ADD ، Controller را انتخاب می کنیم .
1. public class UploadController: Controller { 2. // GET: Upload 3. public ActionResult Index() { 4. return View(); 5. } 6. }
2.حال ، یک View برای متد Index ایجاد می کنیم .
3.کد زیر را جایگزین کد قبلی می کنیم .
1. @{ 2. ViewBag.Title = "www.mitechdev.com"; 3. } 4. <script src="~/Scripts/jquery-1.10.2.min.js"></script> 5. <h2>برنامه نویسان</h2> 6. 7. <div class="panel panel-info"> 8. <div class="panel-heading">
فایل آپلود در Web API
1. </div> 2. <div class="panel-body"> 3. <div class="form-group"> <input type="file" id="uploadfile" /> </div> <input id="btnSubmit" class="btn btn-default" type="button" value="آپلود" /> 4. <div class="text-info" id="status"></div> 5. </div> 6. </div> 7. <script> 8. $(document).ready(function() { 9. $('#btnSubmit').click(function() { 10. if ($('#uploadfile').val() == '') { 11. alert('لفطا فایل خود را انتخاب کنید '); 12. return; 13. } 14. var formData = new FormData(); 15. var file = $('#uploadfile')[0]; 16. formData.append('file', file.files[0]); 17. $.ajax({ 18. url: 'http://localhost:28335/api/Uploadapi', 19. type: 'POST', 20. data: formData, 21. contentType: false, 22. processData: false, 23. success: function(d) { 24. $("#status").html("<span>File uploaded here: <a class='text-success' href=" + d + ">Open File</a></span>"); 25. $('#uploadfile').val(null); 26. }, 27. error: function() { 28. alert("لطفا دوباره امتحان کنید"); 29. } 30. }); 31. }); 32. }); 33. </script>
4.دراین قسمت ، یک شی FormDate( ) ایجاد کرده ایم و فایل را به API Controller ارسال می کنیم .
5.برنامه را اجرا می کنیم .
6. بعد آپلود فایل میتوان با کلیک بر روی لینک زیر میتوان آن را مشاهده کنید .
- Jquery
- 3k بازدید
- 2 تشکر