不能使用IHttpActionResult发布上传图片

时间:2016-11-25 10:47:21

标签: c# asp.net web-services api

我在本地服务器上尝试使用postman来路由API

这是我的代码

[HttpPost]
    [Route("photo")]
    public IHttpActionResult Upload()
    {
        // LOCAL VARIABLE
        int ErrCode = 1;
        dynamic ExpObj = new ExpandoObject();
        string FilePath = HttpContext.Current.Server.MapPath("/Img");

        // GET SID & DECRYPTING OBJEK TO JSON OBJ
        var HttpRequest = HttpContext.Current.Request;
        string SID = GetSID(this.Request.Headers);
        dynamic objek = GetobjekuMultipart(SID, HttpRequest.Form["objek"]);

        // EXTRACT OBJEK
        string UserID = objek.userID;            

        if (HttpRequest.Files.Count > 0)
        {
            // GET UPLOADED IMAGE
            var PostedFile = HttpRequest.Files["image"];

            // SET FILE NAME ( USERID + Right(FileName,10) )
            string FileName = GetFileName(UserID, PostedFile.FileName, 10);

            // SAVE IMAGE
            string ImagePath = Path.Combine(FilePath, FileName);
            PostedFile.SaveAs(ImagePath);

            ExpObj.imageURL = ServerUrl + ServerPath + FileName;
        }
        else
        {
            ErrCode = -900;
        }

        // RETURN IF GOT ERROR
        if (ErrCode < 0)
        {
            return StatusCode((HttpStatusCode)(ErrCode * (-1)));
        }

        // SERIALIZING & ENCRYPTING
        string SerializedObj = JsonConvert.SerializeObject(ExpObj, JsonSetting);
        string EncryptedReturn = Encrypt(SerializedObj, SID);

        // RETURN
        return Ok(EncryptedReturn);
    }

这是我的公共方法(一般方法)

public string Decrypt(string cipherText, string sid)
    {
        RNCryptor.Decryptor D = new Decryptor();
        string DecryptedString = "";

        if (Prod == true)
        {
            try
            {
                DecryptedString = D.Decrypt(cipherText, sid + SigningKey);
            }
            catch (Exception ex)
            {
                int ErrCode = -902; // Error in Decrypt
                throw new HttpResponseException((HttpStatusCode)(ErrCode * (-1)));
            }
        }
        else
        {
            DecryptedString = cipherText;
        }

        return DecryptedString.Trim();
    }

public dynamic GetObjekMultipart(string sid, string Objek)
    {
        string StrObjek = Decrypt(Objek, sid);
        return JsonConvert.DeserializeObject<dynamic>(StrObjek);
    }

    public string GetFileName(string UserID, string fileName, int length)
    {
        string FileName;
        string FileFormat;

        // GET FILE FORMAT
        string[] Words = fileName.Split('.');
        FileFormat = "." + Words[Words.Length - 1];

        // GET FILE NAME WITHOUT THE FILE FORMAT
        FileName = fileName.Substring(0, fileName.Length - FileFormat.Length);

        // SET THE FILE NAME
        FileName = UserID + "-" + GetRight(FileName, length) + FileFormat;

        return FileName;
    }

和POSTMAN结果是&#34;对象引用未设置为对象的实例&#34; 结果表示httprequest.form为NULL 请帮忙:(

0 个答案:

没有答案