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

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

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

پنج شنبه, 21 شهریور 1398 11:49

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

با سلام.

من از یک نمونه کد آکاده که در همین وبسایت جهت آپلود عکس در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;
        }
    }
}

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

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

سلام خدمت شما

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

ارسال پاسخ برای این تاپیک

ارسال پاسخ مخصوص اعضا سایت می باشد ! میتوانید با حساب کاربری خود وارد سایت شده یا ثبت نام کنید