GouthamRDodda
asked on
THIS CGI CODE DOES NOT output as csv file.PLS HELP
hi Experts
i need some help with this code
this code actually generates some data which should be dowloaded as csv file.. but the problem with this code is.. it dowloads as evpData.cgi instead of evpdatA.CSV
CAN ANYONE PLEASE MODIFY THE CODE SO THT IT IS DOWNLOADED AS CSV FILE
ITS URGENT .. PLS HELP..
-------------------------- ---------- ---------- ---------- ---------- ---------
#!/bin/env perl
#print "Content-type: application/vnd.ms-excel\n \n";
#print "Content-type: application/csv.ms-excel\n \n";
#print "Content-type: application/comma-separate d-values\n \n";
#print "Content-type: text/comma-separated-value s\n\n";
print "Content-type: text/csv\n\n";
require "../cgi-lib.pl";
require "../ppdInclude.pl";
&ReadParse;
my $xLat = sprintf("%s%s", $in{'decDegreesLong'},
$in{'decMinutesLong'});
my $yLong= sprintf("%s%s", $in{'decDegreesLat'}, $in{'decMinutesLat'});
#if ($x < 112 || $x > 154) {
# print "longitude values are 112..154 inclusive\n\nYour value is
$x\n";
# exit();
#}
#
#if ($y < -44 || $y > -10) {
# print "latitude values are -10..-44 inclusive\n\nYour value is
$y\n";
# exit();
#}
# make the latitude and longitude are in 0.05 degree granularity
my $yy= int(($yLong-0.025)*20);
$y=-$yy/20.0;
$x= int(($xLat-112+0.025)*20);
my $datafile;
$datafile="data/output_dir _by_lat/$y Long";
my @bits;
open(INPUT, $datafile) or die "Can't find datafile $datafile: $!\n";
print ",Monthly\n";
print ",Evaporation\n";
print ",(mm)\n";
print ",\n";
$_=<INPUT>; @bits = split(' ', $_, 9999); print "January,",
"$bits[$x]\n";
$_=<INPUT>; @bits = split(' ', $_, 9999); print "February,",
"$bits[$x]\n";
$_=<INPUT>; @bits = split(' ', $_, 9999); print "March,",
"$bits[$x]\n";
$_=<INPUT>; @bits = split(' ', $_, 9999); print "April,",
"$bits[$x]\n";
$_=<INPUT>; @bits = split(' ', $_, 9999); print "May,",
"$bits[$x]\n";
$_=<INPUT>; @bits = split(' ', $_, 9999); print "June,",
"$bits[$x]\n";
$_=<INPUT>; @bits = split(' ', $_, 9999); print "July,",
"$bits[$x]\n";
$_=<INPUT>; @bits = split(' ', $_, 9999); print "August,",
"$bits[$x]\n";
$_=<INPUT>; @bits = split(' ', $_, 9999); print "September,",
"$bits[$x]\n";
$_=<INPUT>; @bits = split(' ', $_, 9999); print "October,",
"$bits[$x]\n";
$_=<INPUT>; @bits = split(' ', $_, 9999); print "November,",
"$bits[$x]\n";
$_=<INPUT>; @bits = split(' ', $_, 9999); print "December,",
"$bits[$x]\n";
while (<INPUT>) {
my @bits = split(' ', $_, 9999);
print "$bits[$x]\n";
}
-------------------------- ---------- ---------- --------
i need some help with this code
this code actually generates some data which should be dowloaded as csv file.. but the problem with this code is.. it dowloads as evpData.cgi instead of evpdatA.CSV
CAN ANYONE PLEASE MODIFY THE CODE SO THT IT IS DOWNLOADED AS CSV FILE
ITS URGENT .. PLS HELP..
--------------------------
#!/bin/env perl
#print "Content-type: application/vnd.ms-excel\n
#print "Content-type: application/csv.ms-excel\n
#print "Content-type: application/comma-separate
#print "Content-type: text/comma-separated-value
print "Content-type: text/csv\n\n";
require "../cgi-lib.pl";
require "../ppdInclude.pl";
&ReadParse;
my $xLat = sprintf("%s%s", $in{'decDegreesLong'},
$in{'decMinutesLong'});
my $yLong= sprintf("%s%s", $in{'decDegreesLat'}, $in{'decMinutesLat'});
#if ($x < 112 || $x > 154) {
# print "longitude values are 112..154 inclusive\n\nYour value is
$x\n";
# exit();
#}
#
#if ($y < -44 || $y > -10) {
# print "latitude values are -10..-44 inclusive\n\nYour value is
$y\n";
# exit();
#}
# make the latitude and longitude are in 0.05 degree granularity
my $yy= int(($yLong-0.025)*20);
$y=-$yy/20.0;
$x= int(($xLat-112+0.025)*20);
my $datafile;
$datafile="data/output_dir
my @bits;
open(INPUT, $datafile) or die "Can't find datafile $datafile: $!\n";
print ",Monthly\n";
print ",Evaporation\n";
print ",(mm)\n";
print ",\n";
$_=<INPUT>; @bits = split(' ', $_, 9999); print "January,",
"$bits[$x]\n";
$_=<INPUT>; @bits = split(' ', $_, 9999); print "February,",
"$bits[$x]\n";
$_=<INPUT>; @bits = split(' ', $_, 9999); print "March,",
"$bits[$x]\n";
$_=<INPUT>; @bits = split(' ', $_, 9999); print "April,",
"$bits[$x]\n";
$_=<INPUT>; @bits = split(' ', $_, 9999); print "May,",
"$bits[$x]\n";
$_=<INPUT>; @bits = split(' ', $_, 9999); print "June,",
"$bits[$x]\n";
$_=<INPUT>; @bits = split(' ', $_, 9999); print "July,",
"$bits[$x]\n";
$_=<INPUT>; @bits = split(' ', $_, 9999); print "August,",
"$bits[$x]\n";
$_=<INPUT>; @bits = split(' ', $_, 9999); print "September,",
"$bits[$x]\n";
$_=<INPUT>; @bits = split(' ', $_, 9999); print "October,",
"$bits[$x]\n";
$_=<INPUT>; @bits = split(' ', $_, 9999); print "November,",
"$bits[$x]\n";
$_=<INPUT>; @bits = split(' ', $_, 9999); print "December,",
"$bits[$x]\n";
while (<INPUT>) {
my @bits = split(' ', $_, 9999);
print "$bits[$x]\n";
}
--------------------------
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
To do that you need to look into URL rewriting. If you're using apache, this should be really easy... If you dont know what it is, URL Rewriting is having a fake URL that maps onto a real file... In your case: whatever.csv maps onto your .cgi file.
All you need to do (with a bit of editing of course) is put the following in a file called .htaccess in your root directory:
RewriteEngine on
RewriteRule ^/evpData.csv$ evpData.cgi [R]
So when you request evpData.csv from the server, you get the output of the CGI file. The browser wont know that its being fed from the cgi file and therefore will attempt to name it a .csv