|
|
|||||||||
|
|||||||||
| |||||||||
|
|
|
| |||||||||
![]() |
|
|
«
Previous Thread
|
Next Thread
»
|
Thread Tools | Search this Thread | Rate Thread | Display Modes |
|
|
|
Stop making mediocre tutorials.The best tutorials are video! Camtasia Studio makes it easy to create engaging, buzz-building screen videos at any size, in any popular format. Download the free trial!
|
|
#1
|
|||
|
|||
|
ENCTYPE=MULTIPART/FORM-DATA: a problem
Dear All,
I met a problem: on my new server, when I use METHOD=POST and ENCTYPE=MULTIPART/FORM-DATA for a form (to upload a file), I get strange things happened. First of all, text fields seem to be passed incorrectly. Any text field from form after submitting it, has a newline symbol as the first symbol of it, even if I haven't input anything in the field. Then, files which I upload through this form, seem to be broken somehow when they are uploaded. For example, if I upload a image, function GetImageSize does not recognize uploaded file as an image. I think, some newlines are added there to... Please help me with an advice, what should be adjusted in configuration, or what should I use instead of MULTIPART/FORM-DATA... I appreciate. Alex. |
|
#2
|
|||
|
|||
|
This has less or nothing to do with Apache. Whatever script that is, post this message to that forum.
Keep in mind, binary file doesn't use \n, use \r\n instead. It's even more tricky when mixing with normal input fields. Here is a portion of one of my old perl script that mixed with image upload field and normal text field: Code:
#product_no is a normal text input field.
#$image_name is randomly assigned
@chars=("a".."n","p".."z",1..9);
$image_name="";
for ($i=1;$i<=20;$i++) {
$image_name .= $chars[rand(@chars)];
}
$| = 1;
$buffer =~ /^(.+)\r\n/;
$bound = $1;
@pairs = split(/$bound/,$buffer);
@var = split(/\r\n/,$pairs[2]);
@type = split(/\//,$var[2]);
$image_extension = "$type[1]";
if ($pairs[2] =~ /Content-Type:/) {
$pairs[2] =~ s/^\r\n.+filename.+[^\w\.\%-]([\w\.\%-]+)"\r\n(.*\r\n)\r\n//;
$pairs[2] =~ s/\r\n$//;
$image_file = "$pairs[2]";
}
else {
print "Content-type: text/html\n\n";
print "Error: Can't determine Content-Type\n";
exit(0);
}
if ($pairs[1] =~ /product_no/) {
$pairs[1] =~ s/(.*)product_no"\r\n(.*\r\n)\r\n//;
$pairs[1] =~ s/\r\n$//;
$pairs[1] =~ s/\r\n//;
$pairs[1] =~ s/(.*)product_no"\s+//;
}
open(OUTPUT,">$img_dir/$image_name\.$image_extension");
print OUTPUT $image_file;
close(OUTPUT);
chmod (0666,"$img_dir/$image_name\.$image_extension");
if ($image_extension eq "gif") {
open(GIF, "<$img_dir/$image_name\.$image_extension");
read(GIF, $types, 6);
$types =~ /\xFF\xD8/;
read(GIF, $s, 4) == 4;
close(GIF);
($a,$b,$c,$d)=unpack("C"x4,$s);
}
|
![]() |
| Viewing: Dev Shed Forums > System Administration > Apache Development > ENCTYPE=MULTIPART/FORM-DATA: a problem |
| Thread Tools | Search this Thread |
| Display Modes | Rate This Thread |
|
|
|
|
|