紧急:初学cgi,大侠救命帮忙呀,一定给分

ivysnow 2004-05-07 10:02:12
用html表格提交的文件名如何获得到文件数组(filename)中
<form method=POST action="CGI的URL路径">
<input type = "file" name=FileName1>
<input type = "file" name=FileName2>
<input type = "file" name=FileName3>
</form>
然后在cgi程序中获得1,2,3的文件名(除去路径后的)
具体如何写
最好能给出全部代码
谢谢大侠
...全文
86 18 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
ivysnow 2004-05-13
  • 打赏
  • 举报
回复
问题算结了,请高手们看看 问题:在c编写的cgi程序中如何获取html表单中所提交文件的文件路径文件名和文件内容 一定要顶呀
ykj76 2004-05-13
  • 打赏
  • 举报
回复
整型强制转换字符串
ivysnow 2004-05-12
  • 打赏
  • 举报
回复
请明示"16进制整数转换为汉字和其他转换一样"
我可以把它转换为10进制的整数,该怎么转换为汉字?
谢谢
ykj76 2004-05-12
  • 打赏
  • 举报
回复
文件上传到服务器上在你的另外一个问题贴中答复了
ykj76 2004-05-12
  • 打赏
  • 举报
回复
需要把文件上传到服务器上.
16进制整数转换为汉字和其他转换一样
ivysnow 2004-05-12
  • 打赏
  • 举报
回复
那只是转换为10进制的整数,输出结果是整数而不是汉字呀,我想输出的是汉字,how to do it?

谢谢了
ykj76 2004-05-12
  • 打赏
  • 举报
回复
你上面的代码里面包含的就有(case %部分)
ivysnow 2004-05-11
  • 打赏
  • 举报
回复
ykj76(纳闷):帮我想想以上问题,谢谢
ivysnow 2004-05-11
  • 打赏
  • 举报
回复
那就是说本地文件不能用服务器上的cgi程序处理了?
还有要用c语言获取html表格中提交的文件路径和文件名一定要经过转换吗?那其中的16进制整数转换为汉字的该用什么(因为路径或文件名中有汉字)
谢谢了
ykj76 2004-05-10
  • 打赏
  • 举报
回复
CGI程序运行在服务器上,不能直接对Client访问,因而不能直接打开Client的文件.
但是client的文件可以上传到Server上.
ykj76 2004-05-09
  • 打赏
  • 举报
回复
printf("%s%c%c\n\n","Content-Type:text/html;charset=gb2312",13,10)改为
printf("Content-Type:text/html;charset=gb2312\n\n")
ivysnow 2004-05-09
  • 打赏
  • 举报
回复
ykj76(纳闷) :你有直接转换由web提交到cgi程序的文件路径和名字的代码吗?
比如提交的是file1为C:\Documents and Settings\xuexf\桌面\工作\近期工作\fasta\fasta\HFL-10.1-nuclear-4.1-ITMS-hyw-238-no-virus-v6-seq-de-redund-fasta-20030927.fasta
file2为C:\Documents and Settings\xuexf\桌面\工作\近期工作\fasta\fasta\HFL-10.2-nuclear-4.2-ITMS-hyw-287-no-virus-v6-seq-de-redund-fasta-20030927.fasta

由data = getenv("QUERY_STRING");得到的data字符串为file1=C%3A%5CDocuments+and+Settings%5Cxuexf%5C%D7%C0%C3%E6%5C%B9%A4%D7%F7%5C%BD%FC%C6%DA%B9%A4%D7%F7%5Cfasta%5Cfasta%5CHFL-10.1-nuclear-4.1-ITMS-hyw-238-no-virus-v6-seq-de-redund-fasta-20030927.fasta&file2=C%3A%5CDocuments+and+Settings%5Cxuexf%5C%D7%C0%C3%E6%5C%B9%A4%D7%F7%5C%BD%FC%C6%DA%B9%A4%D7%F7%5Cfasta%5Cfasta%5CHFL-10.2-nuclear-4.2-ITMS-hyw-287-no-virus-v6-seq-de-redund-fasta-20030927.fasta

需要将data字符串直接转换为提交时的文件路径和名字并把每一个都存储到数组file中,你有代码吗

多谢了
ivysnow 2004-05-09
  • 打赏
  • 举报
回复
谢谢,在服务器的cgi程序上可以直接打开本地的文件进行处理吗?文件路径是本地的比如C:\Documents and Settings\xuexf\桌面\工作\近期工作\fasta\fasta\output.txt
ivysnow 2004-05-08
  • 打赏
  • 举报
回复
我用的method是get,有长度限制,用post如何改以上cgi代码?并只要提取文件名
谢谢了
ivysnow 2004-05-08
  • 打赏
  • 举报
回复
输出很不稳定,总是记忆前面提交的文件,并且长度不对

文件结果
文件是:e6=&file7=&file8=&file9=&file10=

有两个网页的,输出内容还相互混淆比如以上是一有十个表单的网页,在此3个表单的网页中出现
ykj76 2004-05-08
  • 打赏
  • 举报
回复
看看你输出的html内容,应该是输出html格式错误
ivysnow 2004-05-07
  • 打赏
  • 举报
回复
浏览的文件名都很长如:HFL-10.1-nuclear-4.1-ITMS-hyw-238-no-virus-v6-seq-de-redund-fasta-20030927.fasta
得到的结果时长时短的,并且有时就不是提交的文件名,有时是form中action的文件名
我不知道原因在哪里,希望大侠尽快帮忙,否则要死人了,呜呜呜呜......
ivysnow 2004-05-07
  • 打赏
  • 举报
回复
查到一代码(分析名字/值 对)如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int htoi(char *);
main()
{
int i,n;
char c;
printf("%s%c%c\n\n","Content-Type:text/html;charset=gb2312",13,10);

n=0;
if (getenv("CONTENT-LENGTH"))
n=atoi(getenv("CONTENT-LENGTH"));
for (i=0; i<n;i++)
{
int is_eq=0;
c=getchar();
switch (c)
{
case '&':
c='\n';
break;
case '+':
c=' ';
break;
case '%':
{
char s[3];
s[0]=getchar();
s[1]=getchar();
s[2]=0;
c=htoi(s);
i+=2;
}
break;
case '=':
c=':';
is_eq=1;
break;
};
putchar(c);
if (is_eq) putchar(' ');
}
printf("<body><h3>文件结果</h3>\n");
printf("<p>文件是:%s",c);
printf("</body>\n");
putchar ('\n');
fflush(stdout);
}
/* convert hex string to integer */
int htoi(char *s)
{
char *digits="0123456789ABCDEF";
if (islower (s[0]))
s[0] = toupper(s[0]);
if (islower (s[1]))
s[1] = toupper(s[1]);
return 16 * (strchr(digits, s[0]) - strchr (digits,'0') ) + (strchr(digits,s[1])-strchr(digits,'0'));
}
直接在apache + windows运行文件名很不稳定,希望大侠指点
谢谢谢谢了
会给分的

2,204

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 CGI
社区管理员
  • CGI社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧