When using the file upload feature I found that some hosts were
fussy about the filename being passed. I modified Snoopy to
allow a different filename to be passed to the host from the one
used on the local filesystem. At the same time I also added the
ability to specify Content-Type for each file uploaded.
In _prepare_post_body () replace:
reset($formfiles);
while (list($field_name, $file_names) = each($formfiles)) {
settype($file_names, "array");
while (list(, $file_name) = each($file_names)) {
if (!is_readable($file_name)) continue;
$fp = fopen($file_name, "r");
$file_content = fread($fp, filesize
($file_name));
fclose($fp);
$base_name = basename($file_name);
$postdata .= "--".$this-
>_mime_boundary."\r\n";
$postdata .= "Content-Disposition: form-
data; name=\"$field_name\"; filename=\"$base_name\"\r\n\r\n";
$postdata .= "$file_content\r\n";
}
}
$postdata .= "--".$this->_mime_boundary."--\r\n";
break;
With:
reset($formfiles);
while (list($field_name, $file_names) = each($formfiles)) {
settype($file_names, "array");
while (list(, $file_name) = each($file_names)) {
if (is_array($file_name)) {
if (!is_readable($file_name
["name"])) continue;
if (isset($file_name
["remotename"]))
$base_name =
$file_name["remotename"];
else
$base_name =
basename($file_name["name"]);
$postdata .= "--".$this-
>_mime_boundary."\r\n";
$postdata .= "Content-
disposition: form-data; name=\"$field_name\";
filename=\"$base_name\"\r\n";
if ($file_name["type"])
$postdata .= "Content-
type: ".$file_name["type"]."\r\n";
$fp = fopen($file_name
["name"], "r");
$file_content = fread($fp, filesize
($file_name["name"]));
fclose($fp);
$postdata .= "\r\n$file_content\r\n";
} else {
if (!is_readable($file_name))
continue;
$fp = fopen
($file_name, "r");
$file_content = fread($fp, filesize
($file_name));
fclose($fp);
$base_name = basename
($file_name);
$postdata .= "--".$this-
>_mime_boundary."\r\n";
$postdata .= "Content-
Disposition: form-data; name=\"$field_name\";
filename=\"$base_name\"\r\n\r\n";
$postdata .= "$file_content\r\n";
}
}
}
$postdata .= "--".$this->_mime_boundary."--\r\n";
break;
You may need to adjust indentation as it may have suffered
during posting to Sourceforge. I have also writted some help
text on the file upload feature in the attached file UPLOAD.TXT.
Hope this helps.
Chris.
Help with Snoopy file upload feature
Logged In: YES
user_id=2972
I created a diff/patch for this change