مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

saeed200

عضویت از 1394/09/02

مشکل آپلود عکس در weapi

  • پنجشنبه 21 شهریور 1398
  • 11:49
تشکر میکنم

با سلام.

من از یک نمونه کد آکاده که در همین وبسایت جهت آپلود عکس درwebapi  بود استفاده کردم.

اما با وجود اینکه عکس رو آپلود میکنه، درنهایت درقسمت جاوااسکریپت به قسمت error میره.

این کد صفحه ی آپلود میباشد
@{
    ViewBag.Title = "www.mitechdev.com";
}
<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<h2>برنامه نویسان</h2>

<div class="panel panel-info">
    <div class="panel-heading">
        فایل آپلود
    </div>
    <div class="panel-body">
        <div class="form-group">
            <input type="file" id="uploadfile" />
        </div>
        <input id="btnSubmit" class="btn btn-default" type="button" value="آپلود" />
        <div class="text-info" id="status"></div>
    </div>
</div>

<script>
            $(document).ready(function () {
                $('#btnSubmit').click(function () {
                    if ($('#uploadfile').val() === '') {
                        alert('انتخاب فایل');
                        return;
                    }

                    var formData = new FormData();
                    var file = $('#uploadfile')[0];
                    formData.append('file', file.files[0]);
                    $.ajax({
                       // url: 'http://localhost:28335/api/Uploadapi',
                        url: 'http://www.mydomain.ir/api/Uploadapi',
                        type: 'POST',
                        data: formData,
                        contentType: false,
                        processData: false,
                        success: function (d) {                     
                            $("#status").html("<span> <a class='text-success' href="+d+">باز کردن فایل آپلود شده</a></span>");
                            $('#uploadfile').val(null);
                        },
                        error: function (err) {
                            alert(err);
                        }
                    });
                });
            });
</script>

این هم کد API
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Threading.Tasks;
using System.Web;
using System.Web.Http;

namespace WebApiExample.Controllers
{
    public class UploadapiController : ApiController
    {
        public Task<HttpResponseMessage> Post()
        {
           
            List<string> savedFilePath = new List<string>();
            if (!Request.Content.IsMimeMultipartContent())
            {
                throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
            }
            //string rootPath = HttpContext.Current.Server.MapPath("~/UploadedFiles");
            string rootPath = HttpContext.Current.Server.MapPath("~/imgfile");
            var provider = new MultipartFileStreamProvider(rootPath);
            var task = Request.Content.ReadAsMultipartAsync(provider).
                ContinueWith<HttpResponseMessage>(t =>
                {
                    if (t.IsCanceled || t.IsFaulted)
                    {
                        Request.CreateErrorResponse(HttpStatusCode.InternalServerError, t.Exception);
                    }
                    foreach (MultipartFileData item in provider.FileData)
                    {
                        try
                        {
                            string name = item.Headers.ContentDisposition.FileName.Replace("\"", "");
                            string newFileName = Guid.NewGuid() + Path.GetExtension(name);
                            File.Move(item.LocalFileName, Path.Combine(rootPath, newFileName));

                            Uri baseuri = new Uri(Request.RequestUri.AbsoluteUri.Replace(Request.RequestUri.PathAndQuery, string.Empty));
                            string fileRelativePath = "~/imgfile/" + newFileName;
                            Uri fileFullPath = new Uri(baseuri, VirtualPathUtility.ToAbsolute(fileRelativePath));
                            savedFilePath.Add(fileFullPath.ToString());
                        }
                        catch (Exception ex)
                        {
                            string message = ex.Message;
                        }
                    }

                    return Request.CreateResponse(HttpStatusCode.Created, savedFilePath);
                });
            return task;
        }
    }
}

اینم تصویر خطا

پاسخ های این پرسش

تعداد پاسخ ها : 1 پاسخ
کاربر سایت

محمد اردوخانی

عضویت از 1396/05/17

  • دوشنبه 25 شهریور 1398
  • 09:09

سلام خدمت شما

به جای استفاده از alert از console.log استفاده کنین تا بهتون متن دقیق ارور رو بده و بعد اینجا ارسال کنین

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)