Here we discuss different approaches to providing
the ability to include uploaded files in
multipart POST'ed forms via RCurl.
At present, the postForm function in RCurl assumes that all the name =
value pairs passed to it are simple string values. My original notion
for handling the upload of forms was that the R code would know to
read the contents of the specified file into an R string and pass it
to postForm() directly. This is, in many ways, desirable as the
"application" calling postForm knows when it is talking about a file
rather than a simple piece of text. Unfortunately, however, this
won't work particularly well with binary files unless we read them
into R and pass the contents directly to the RCurl C code. We can use
the raw type to do this.
We also need to allow the caller specify the name of the file rather
than just its contents. And we also need to allow the specification
of the content-type.
libcurl can also support
The following is one interface. We create a new function named
fileUpload which can be told about a filename or given the contents,
the content type and the file from which it came. This puts a class
on the object and when we receive one of these in the C code, we
process it "approrpiately".