收藏
回答

要通过C#实现微信小店API的图片上传功能,framework4.0 不用await代码?

 public static string postimg(string url,string imagePath)

        {

            string ls_r = "";

           // string imagePath = @"path/to/your/image.jpg"; // 图片路径

            //string url = "http://yourserver.com/upload"; // 上传目标URL

            string boundary = "---------------------------" + DateTime.Now.Ticks.ToString("x"); // 生成一个边界字符串

            byte[] boundaryBytes = System.Text.Encoding.ASCII.GetBytes("\r\n--" + boundary + "\r\n");

            byte[] endBoundaryBytes = System.Text.Encoding.ASCII.GetBytes("\r\n--" + boundary + "--\r\n");

            HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url);

            webRequest.ContentType = "multipart/form-data; boundary=" + boundary;

            webRequest.Method = "POST";

            webRequest.KeepAlive = true;

            webRequest.Credentials = System.Net.CredentialCache.DefaultCredentials;


            using (Stream requestStream = webRequest.GetRequestStream())

            {

                string formdataTemplate = "Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"\r\nContent-Type: {2}\r\n\r\n";

                FileStream fileStream = new FileStream(imagePath, FileMode.Open, FileAccess.Read);

                fileStream.CopyTo(requestStream);

                byte[] formdata = System.Text.Encoding.UTF8.GetBytes(string.Format(formdataTemplate, "image", imagePath, "image/jpeg")); // 假设是JPEG格式的图片

                requestStream.Write(boundaryBytes, 0, boundaryBytes.Length); // 分隔符开始部分

                requestStream.Write(formdata, 0, formdata.Length); // 文件描述部分(这里是固定的,可以根据需要修改)

                fileStream.Seek(0, SeekOrigin.Begin); // 重置文件流位置到开始处,以便将文件内容写入请求流中

                fileStream.CopyTo(requestStream); // 文件内容写入请求流中

                requestStream.Write(endBoundaryBytes, 0, endBoundaryBytes.Length); // 分隔符结束部分

            }


            using (HttpWebResponse response = (HttpWebResponse)webRequest.GetResponse())

            {

                using (StreamReader reader = new StreamReader(response.GetResponseStream()))

                {

                    string responseString = reader.ReadToEnd(); // 获取响应内容

                   // Console.WriteLine("Response: " + responseString); // 输出响应内容或处理响应数据

                    logCOM.f_logtxt("ResponseIMG", responseString);

                    ls_r = responseString;

                }

            }

            return ls_r;


        }



返回错误47001


 {"errcode":47001,"errmsg":"data format error rid: 67a390bf-3291c620-3bc60896"}

回答关注问题邀请回答
收藏

1 个回答

  • 微信小店技术专员-Kris
    微信小店技术专员-Kris
    02-06

    您好,请求体格式不正确,请检查请求体中各个参数的类型是否正确。

    02-06
    有用 1
    回复
登录 后发表内容