荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: 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(&currentuser, board)) http_fatal("错误的讨论区");
 if(!has_post_perm(&currentuser, 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(&currentuser, 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软件 网络书店