Fix HTTP Proxy asset file uploads.

This commit is contained in:
Drake 2006-09-28 01:49:12 +00:00
parent bb360794c1
commit e8fd02ca9e
3 changed files with 16 additions and 13 deletions

View file

@ -1,3 +1,7 @@
7.0.9
- partial fix: invalid Message-ID headers in outgoing mail
- fix: HttpProxy not doing file uploads correctly
7.0.8
- Fixed a couple of minor bugs with the default values of the Request
Approval for Version Tag workflow activity.
@ -34,7 +38,6 @@
- fix: attachments section of post form not working correctly on edit
- Images now create revisions as you resize them, so you can roll back to a
previous size.
- partial fix: invalid Message-ID headers in outgoing mail
7.0.7
- rfe: Image Management (funded by Formation Design Systems)

View file

@ -26,6 +26,7 @@ use WebGUI::Session;
use WebGUI::User;
use WebGUI::Utility;
use WebGUI::PassiveProfiling;
use Apache2::Upload;
use Apache2::Request;
use Apache2::RequestRec ();
use Apache2::RequestIO ();

View file

@ -257,7 +257,7 @@ sub view {
$cookiebox =~ s/[^A-Za-z0-9\-\.\_]//g; #removes all funky characters
$cookiebox .= '.cookie';
my $jar = HTTP::Cookies->new(File => $self->getCookieJar->getPath($cookiebox), AutoSave => 1, Ignore_Discard => 1);
my (%var, %formdata, @formUpload, $redirect, $response, $header, $userAgent, $proxiedUrl, $request);
my (%var, %formdata, $redirect, $response, $header, $userAgent, $proxiedUrl, $request);
if($self->session->form->param("func")!~/editSave/i) {
$proxiedUrl = $self->session->form->process("FormAction") || $self->session->form->process("proxiedUrl") || $self->get("proxiedUrl") ;
@ -311,18 +311,17 @@ sub view {
my $contentType = 'application/x-www-form-urlencoded'; # default Content Type header
# Create a %formdata hash to pass key/value pairs to the POST request
foreach my $input_name ($self->session->form->param) {
next if ($input_name !~ /^HttpProxy_/); # Skip non proxied form var's
$input_name =~ s/^HttpProxy_//;
foreach my $input_name ($self->session->request->param) {
$input_name =~ s/^HttpProxy_// or next;
my $uploadFile = $self->session->request->upload($self->session->form->process('HttpProxy_'.$input_name));
if(-r $uploadFile) { # Found uploaded file
@formUpload=($uploadFile, $self->session->form->process('HttpProxy_'.$input_name));
$formdata{$input_name}=\@formUpload;
$contentType = 'form-data'; # Different Content Type header for file upload
} else {
$formdata{$input_name}=$self->session->form->process('HttpProxy_'.$input_name);
}
my (@upload) = grep{defined} $self->session->request->upload('HttpProxy_'.$input_name);
if (@upload) { # Found uploaded file
my $upload = $upload[0];
$formdata{$input_name}=[$upload->tempname, $self->session->form->process('HttpProxy_'.$input_name)];
$contentType = 'form-data'; # Different Content Type header for file upload
} else {
$formdata{$input_name}=$self->session->form->process('HttpProxy_'.$input_name);
}
}
# Create POST request
$request = HTTP::Request::Common::POST($proxiedUrl, \%formdata, Content_Type => $contentType);