简体   繁体   中英

Upload file with webrequest

Im trying to upload an image to an imagehost http://uploads.im/ .

According to its very short API http://uploads.im/apidocs this is a way of doing that:

http://uploads.im/api?upload=http://www.google.com/images/srpr/nav_logo66.png

Note that in this example he is upploading an image from the internet and Im trying to upload a file from my computer.

Code:

public ActionResult SaveUploadedFile()
{
    //Converts the image i want to upload to a bytearray
    Image postData = img;
    byte[] byteArray = imageToByteArray(postData);                

    //Is this adress not correct maybe? Is there a way to test?
    WebRequest wrq = WebRequest.Create("http://uploads.im/api?upload=");
    wrq.Method = ("POST");

    //Im thinking that here I need som code
    //that specifys the file i want to upload (bytearray)

    using (WebResponse wrs = wrq.GetResponse())
    using (Stream stream = wrs.GetResponseStream())
    using (StreamReader reader = new StreamReader(stream))
    {
        string json = reader.ReadToEnd();
        tempJson = json;
    }
}

Please have look! Thanks!

EDIT, new code:

string filepath = @"c:\Users\xxxx\Desktop\Bilder\images\blank.gif";

using (WebClient client = new WebClient())
{
    client.UploadFile("http://uploads.im/api?upload", filepath);
}

I get the error: : The underlying connection closed

EDIT with try catch:

string filepath = @"c:\Users\xxxx\Desktop\sack.png";
using (WebClient client = new WebClient())
{
    try
    {
        client.UploadFile("http://uploads.im/api?upload", filepath);
    }
    catch (Exception e)
    {
        throw new ApplicationException(e);
    }
}
private void UploadImage(string filepath)
{

    using(WebClient uploader = new WebClient())
    {
        try
        {
            uploader.UploadFile(new Uri("http://uploads.im/api?upload"), filepath);
        }
        catch(Exception ex)
        {
            MessageBox.Show("An error occured :(\r\n" + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
    }

}

I'm using http://uploads.im/api?upload as the Endpoint, because, as read in the docs, it will be treated as REQUEST and will automatically detect the upload of an image.
However, I tried this code myself and get disconnected every-time without any meaningful response, just The remote host unexpectedly closed the connection . According to the docs you should get a Bad request when something is wrong. I contacted the support and hope they can tell me more about it. (Edit: They did not)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM