libmicrohttpd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [libmicrohttpd] POST file content without the form method


From: Evgeny Grin
Subject: Re: [libmicrohttpd] POST file content without the form method
Date: Mon, 26 Jun 2017 22:24:43 +0300

26.06.2017, 16:35, "address@hidden" <address@hidden>:
> I've used the largepost.c example and implemented the upload. When I perform 
> a test using cUrl, everything works fine.
>
> curl -F "payload=<remove.xml" http://username:address@hidden:9090
>
> However requirements changed and I need to change the logic from using the 
> form post to posting the file content directly without having a "key". Doing 
> this in cUrl looks like:
>
> curl -d "@remove.xml" http://username:address@hidden:9090
>
> Assume the signature of my iteratePost looks like this:
>
> static int iteratePost(void *conInfoCls,
>                        enum MHD_ValueKind kind,
>                        const char *key,
>                        const char *filename,
>                        const char *content_type,
>                        const char *transfer_encoding,
>                        const char *data,
>                        uint64_t off,
>                        size_t size);
>
> When i post the file content directly, some part of the files content is in 
> the key and some in the data variables. It would be possible to handle this; 
> however, if have a "=" character in the first section of the file, it seems 
> that libmicrohttpd is removing it. So lets assume the file remove.xml has the 
> following line at the beginning:
>
> <?xml version="1.0" encoding="ISO-8859-1"?>
>
> What is receive in the iteratePost is:
> <?xml version"1.0" encoding="ISO-8859-1"?>
>
> Hence, the content is invalid.
>
> Is there a way in the library to handle this case?

Hi Alex,

If I understand you correctly, you are trying to upload some arbitrary data to 
MHD. Correct?

POST is designed to handle uploading of filled forms with data in format 
'name=value'. It cannot handle some random data.
If you want to push content of any local file, you should use PUT.

src/testcurl/test_put.c test_put_chunked.c and test_large_put.c may give you 
some inspiration.


-- 
Best Wishes,
Evgeny Grin




reply via email to

[Prev in Thread] Current Thread [Next in Thread]