C# 如何使用httpwebrequest c在imgur上上传大尺寸图像文件#
我有一个关于在imgur上上传大文件的问题 我在imgur.com上找到了一个使用api上传图像的源代码 它适用于小尺寸的图像文件,但不适用于大尺寸的图像文件 我已经测试了488kb大小的图像文件 该错误返回400错误请求服务器错误 这是我的源代码,请给我一个建议 多谢各位C# 如何使用httpwebrequest c在imgur上上传大尺寸图像文件#,c#,imgur,C#,Imgur,我有一个关于在imgur上上传大文件的问题 我在imgur.com上找到了一个使用api上传图像的源代码 它适用于小尺寸的图像文件,但不适用于大尺寸的图像文件 我已经测试了488kb大小的图像文件 该错误返回400错误请求服务器错误 这是我的源代码,请给我一个建议 多谢各位 private string upload_img(string img_name) { string img_url = ""; try { strin
private string upload_img(string img_name)
{
string img_url = "";
try
{
string api_url_image = "https://api.imgur.com/3/image";
// string api_url = "https://api.imgur.com/3/upload";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(api_url_image);
request.Headers.Add("Authorization", "Client-ID <<My client ID Here>>"); //authorized id
request.Method = "POST";
FileStream file = new FileStream(filePath, FileMode.Open);
byte[] image = new byte[file.Length];
file.Read(image, 0, (int)file.Length);
ASCIIEncoding enc = new ASCIIEncoding();
string postData = Convert.ToBase64String(image);
byte[] bytes = enc.GetBytes(postData);
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = bytes.Length;
Stream writer = request.GetRequestStream();
writer.Write(bytes, 0, bytes.Length);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
response.GetResponseStream();
if (response.StatusCode == HttpStatusCode.OK)
{
Stream responseStream = response.GetResponseStream();
string responseStr = new StreamReader(responseStream).ReadToEnd();
img_url = responseStr.Remove(0, responseStr.IndexOf("link") + 7);
img_url = img_url.Substring(0, img_url.IndexOf("success") - 4);
img_url = img_url.Replace("\\","");
responseStream.Close();
}
response.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
return img_url;
}
私有字符串上传\u img(字符串img\u名称)
{
字符串img_url=“”;
尝试
{
字符串api\u url\u图像=”https://api.imgur.com/3/image";
//字符串api_url=”https://api.imgur.com/3/upload";
HttpWebRequest请求=(HttpWebRequest)WebRequest.Create(api\uURL\uImage);
request.Headers.Add(“授权”,“客户端ID”);//授权ID
request.Method=“POST”;
FileStream file=newfilestream(filePath,FileMode.Open);
byte[]image=新字节[file.Length];
读取(image,0,(int)file.Length);
ascienceoding enc=新的ascienceoding();
string postData=Convert.ToBase64String(图像);
字节[]字节=enc.GetBytes(postData);
request.ContentType=“application/x-www-form-urlencoded”;
request.ContentLength=字节.Length;
流编写器=request.GetRequestStream();
writer.Write(字节,0,字节.长度);
HttpWebResponse=(HttpWebResponse)request.GetResponse();
response.GetResponseStream();
if(response.StatusCode==HttpStatusCode.OK)
{
Stream responseStream=response.GetResponseStream();
字符串responsest=新的StreamReader(responseStream).ReadToEnd();
img_url=responsest.Remove(0,responsest.IndexOf(“链接”)+7);
img_url=img_url.Substring(0,img_url.IndexOf(“成功”)-4);
img\u url=img\u url.Replace(“\\”,”);
responseStream.Close();
}
response.Close();
}
捕获(例外情况除外)
{
MessageBox.Show(例如Message);
}
返回img_url;
}
当我下载图像文件并保存它时。
我限制了文件大小,如下所示
这是我的错误:)
私有字符串下载\u img(字符串url)
{
string imageUrl = @url;
string img_name = imageUrl.Replace("http://i.imgur.com/", "");
string saveLocation = @"C:\folder_name\" + img_name;
byte[] imageBytes;
HttpWebRequest imageRequest = (HttpWebRequest)WebRequest.Create(imageUrl);
WebResponse imageResponse = imageRequest.GetResponse();
Stream responseStream = imageResponse.GetResponseStream();
using (BinaryReader br = new BinaryReader(responseStream))
{
imageBytes = br.ReadBytes(500000);
br.Close();
}
responseStream.Close();
imageResponse.Close();
FileStream fs = new FileStream(saveLocation, FileMode.Create);
BinaryWriter bw = new BinaryWriter(fs);
try
{
bw.Write(imageBytes);
}
finally
{
fs.Close();
bw.Close();
}
return img_name;
}
private string download_img2(string url)
{
string imageUrl = @url;
string img_name = imageUrl.Replace("http://i.imgur.com/", "");
string saveLocation = @"C:\ssulf\" + img_name;
byte[] imageBytes;
HttpWebRequest imageRequest = (HttpWebRequest)WebRequest.Create(imageUrl);
WebResponse imageResponse = imageRequest.GetResponse();
Stream responseStream = imageResponse.GetResponseStream();
using (BinaryReader br = new BinaryReader(responseStream))
{
// imageBytes = br.ReadBytes(500000);
imageBytes = br.ReadBytes(1000000);
br.Close();
}
responseStream.Close();
imageResponse.Close();
FileStream fs = new FileStream(saveLocation, FileMode.Create);
BinaryWriter bw = new BinaryWriter(fs);
try
{
bw.Write(imageBytes);
}
finally
{
fs.Close();
bw.Close();
}
return img_name;
}