将JSON数据和图像同时发布到Web API 2

时间:2018-03-16 18:47:32

标签: c# asp.net-web-api2

我有一个将数据添加到SQL数据库并将图像上传到服务器的功能。

我将图像转换为base64字符串以发送它与我的帖子,但我读到图像大小比原始文件大33%。我想改变它,但我不知道如何。

这是我的代码:

public async Task<IHttpActionResult> Post([FromBody]Post userpost)
    {
        if (ModelState.IsValid)
       {
            int postid = Convert.ToInt32(postDB.AddPost(userpost));                   

            if (userpost.fileBody.Length > 0)
            {
                var filename = string.Format("{0}_{1}{2}", postid, Guid.NewGuid().ToString(), ".jpg");

                var ms = new MemoryStream(Convert.FromBase64String(userpost.fileBody));

                 await upload.UploadFile(filename, ms, "image/jpg","images");

                ms.Close();

                return Content(HttpStatusCode.Accepted, "{\"pic\":\"" + filename + "\"}");
            }
            else
                return Ok(HttpStatusCode.OK);
        }
        else
            return Ok(HttpStatusCode.NotAcceptable);
    }

我正在测试Postman或JQuery的web api

1 个答案:

答案 0 :(得分:1)

尝试使用Mulitpart / Fromdata帖子。使用此功能,您可以同时发送文件和JSON数据。但是,您需要更改API以读取multipartformdata。这样,与base64string相比,文件大小会更小。

Statement stm = con.createStatement();
ResultSet rs = stm.executeQuery("select pass from admin where nama='admin'");

if (rs.next()) {
    String n = rs.getString(1);

    if (n == nama) {
        Pegawai.setEnabled(true);
        InputCuti.setEnabled(true);
        DataCuti.setEnabled(true);
        DataCuti1.setEnabled(true);
        //in this part I want to stop the loop.
    } else {
        Pegawai.setEnabled(false);
        InputCuti.setEnabled(false);
        DataCuti.setEnabled(true);
        DataCuti1.setEnabled(true);
    }

}