* must be explicitly cast to long in curl_formadd
* use since curl needs a long not an int. */
if (*postval == '@') {
+ char *type;
++postval;
+
+ if ((type = php_memnstr(postval, ";type=", sizeof(";type=") - 1, postval + strlen(postval)))) {
+ *type = '\0';
+ }
/* open_basedir check */
if (php_check_open_basedir(postval TSRMLS_CC)) {
+ if (type) {
+ *type = ';';
+ }
RETVAL_FALSE;
return 1;
}
- error = curl_formadd(&first, &last,
+ if (type) {
+ type++;
+ error = curl_formadd(&first, &last,
CURLFORM_COPYNAME, key,
CURLFORM_NAMELENGTH, l,
- CURLFORM_FILE, postval,
+ CURLFORM_FILE, postval,
+ CURLFORM_CONTENTTYPE, type,
CURLFORM_END);
+ *(type - 1) = ';';
+ } else {
+ error = curl_formadd(&first, &last,
+ CURLFORM_COPYNAME, key,
+ CURLFORM_NAMELENGTH, l,
+ CURLFORM_FILE, postval,
+ CURLFORM_END);
+
+ }
} else {
error = curl_formadd(&first, &last,
CURLFORM_COPYNAME, key,