荔园在线
荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀
[回到开始]
[上一篇][下一篇]
发信人: BAX.bbs@bbs.csu.edu.cn (都是夜归人), 信区: InstallBBS
标 题: Re: 谁有WWW方式下粘贴附件的代码?
发信站: 云麓园 (Fri Oct 11 18:45:11 2002)
转信站: SZUBBS!news2.happynet.org!CSUBBS
可以在云麓园看看效果,测试请上传有用的
东西,谢谢合作。
http://bbs.csu.edu.cn
bbsupload.c
#include "www.h"
int bbsupload_main() {
char board[80];
init_all();
strsncpy(board, getparm("board"), 30);
if(!loginok) http_fatal("匆匆过客无法上传附件");
if(!has_read_perm(¤tuser, board)) http_fatal("错误的讨论区");
if(!has_post_perm(¤tuser, board)) http_fatal("无权上载附件至该版");
strsncpy(board, getparm("board"), 80);
printf("<center>%s -- 上传附件至%s讨论区 [使用者: %s] <hr color=green>\n",
BBSNAME, board, currentuser.userid);
printf("注意,bbs服务器资源宝贵,为节省空间,请勿上传过大的文件。请勿上传与
版面无关的文件。<br>\n");
printf("目前单个上载文件大小限制为2M字节. <br>\n");
printf("请遵守国家法律,<font color=red>严禁上载非法资料和可能导致纠纷的资料
</font>。<br>\n");
printf("<form method=post action=bbsdoupload enctype='multipart/form-data'>
\n");
printf("<table>\n");
printf("<tr><td>上载附件: <td><input type=file name=up>");
printf("<input type=hidden name=MAX_FILE_SIZE value=5000000>");
printf("<input type=hidden name=board value='%s'>", board);
printf("<tr><td>个人推荐评价: <td>");
printf("<input type=radio name=level value=0 checked>1星 ");
printf("<input type=radio name=level value=1>2星 ");
printf("<input type=radio name=level value=2>3星 ");
printf("<input type=radio name=level value=3>4星 ");
printf("<input type=radio name=level value=4>5星 ");
printf("<tr><td>希望保留的时间: <td><input name=live size=4 maxlength=4 val
ue=180>(1-9999)天<br>\n");
printf("<tr><td>附件的简要说明: <td><input name=exp size=60 maxlength=72>\n
");
printf("</table>\n");
printf("<hr color=green><br>\n");
printf("<input type=submit value='开始上传文件'> \n");
printf("<input type=button onclick='javascript:history.go(-1)' value='返回上
一页'> \n");
printf("</form>");
}
bbsupload2.c
#include "www.h"
static struct dir x;
int bbsupload2_main() {
char file[80], name[80];
int i, level, pid;
init_all();
if(!loginok) http_fatal("匆匆过客无法执行本操作,请先登录");
x.active=1;
x.level=atoi(getparm("level"));
strsncpy(x.board, getparm("board"), 20);
strsncpy(x.exp, getparm("exp"), 72);
strsncpy(x.userid, currentuser.userid, 13);
strsncpy(x.showname, getparm("name"), 36);
do_check(x.showname);
x.date=time(0);
strsncpy(x.type, getparm("type"), 30);
x.live=atoi(getparm("live"));
for(i=0; x.showname[i]; i++) {
int c=x.showname[i];
if(c<-1) continue;
if(isalnum(c) || c=='.' || c=='-') continue;
x.showname[i]='_';
}
level=atoi(getparm("level"));
pid=atoi(getparm("file"));
sprintf(file, "tmp/%d.upload", pid);
strsncpy(name, getparm("name"), 30);
if(!has_post_perm(¤tuser, x.board)) http_fatal("错误的讨论区或无权上载
至本讨论区");
if(!file_exist(file)) http_fatal("错误的文件名");
x.size=file_size(file);
{
char buf[256];
sprintf(buf, "%16.16s %s %d %s %s %s\n",
Ctime(time(0))+4, currentuser.userid, x.size, fromhost, x.board, x.showna
me);
f_append("upload.log", buf);
}
if(x.size>5000000) {
unlink(file);
http_fatal("文件太大(请不要超过5M)");
}
upload(file, &x);
unlink(file);
printf("附件上载成功, ");
printf("URL为 <font color=green>http://bbs.nju.edu.cn/showfile?name=%s </fo
nt><br>\n", x.showname);
printf("(以上URL(绿色部分)可拷贝至文章中直接引用, 系统会判断类型自动生成超链
接.)<br>\n");
printf("如不拷贝, 则只能在版面的文章上载区看到本附件.<hr color=green>\n");
printf("评定等级: %d星<br>\n", x.level+1);
printf("保留时间: %d天<br>\n", x.live);
printf("文件大小: %d字节<br>\n", x.size);
printf("文件类型: %s<br>\n", x.type);
printf("文件名称: %s<br>\n", x.showname);
printf("上载人ID: %s<br>\n", x.userid);
printf("上载时间: %s<br>\n", Ctime(time(0))+4);
printf("上载版面: %s<br>\n", x.board);
printf("文件说明: %s<br>\n", nohtml(x.exp));
printf("<hr color=green><a href='javascript:history.go(-3)'>返回</a>\n");
http_quit();
}
int badfile(char *filename) {
int i;
for(i=0; filename[i]; i++)
if(!strchr("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789
", filename[i])) return 1;
return 0;
}
int upload(char *file, struct dir *x) {
FILE *fp;
int t=times(0);
char buf[256], dir[256];
x->filename=t;
sprintf(buf, UPLOAD_PATH"/%d", t);
link(file, buf);
sprintf(dir, UPLOAD_PATH"/.DIR");
fp=fopen(dir, "a");
fwrite(x, sizeof(struct dir), 1, fp);
fclose(fp);
return 0;
}
int do_check(char *show) {
FILE *fp;
struct dir x;
show[30]=0;
fp=fopen(UPLOAD_PATH"/.DIR", "r");
if(fp==0) return;
while(1) {
if(fread(&x, sizeof(x), 1, fp)<=0) break;
if(!strcmp(x.showname, show)) {
sprintf(show, "%d%s", time(0), x.showname);
fclose(fp);
return;
}
}
fclose(fp);
}
【 在 bluetent@smth.org (bluetent) 的大作中提到: 】
: 请贴一下,谢谢
--
#include
#define S "Hello,I'm From 云麓园 "
main(){exit(printf(S)==srtlen(S)?0:1);}
There is always more then one way to do it,right
[回到开始]
[上一篇][下一篇]
荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店