goaheadファイルアップロード
6748 ワード
1.goaheadファイルアップロード修正と追加が必要なソースコード goahead.cファイルに受信クライアント(ブラウザ)ファイルのactionを追加して登録します.コード例: windowsでgoaheadサーバを実行する場合は、Goahead-windows-default-me.hまたはGoahead-windows-static-me.hファイルを変更し、linuxシステムの下でgoaheadサーバを実行する場合は、Goahead-linux-default-me.hまたはGoahead-linux-static-me.hを変更します.変更内容: マクロME_の変更GOAHEAD_UPLOAD_DIR、このマクロはファイルアップロード時に設定された一時保存フォルダを処理するために使用され、設定された一時保存ファイルのディレクトリに変更されます.例えば、#define ME_に変更されます.GOAHEAD_UPLOAD_DIR “D:/test” http.cファイルを修正static void parseHeader(Webs*wp)関数の次のコード(2 Mより大きいファイルを格納するため):
2.フロントコード例
3.結果
static void uploadFileAction(Webs *wp)
{
WebsKey *s;
WebsUpload *up;
char *upfile;
websSetStatus(wp, 200);
websWriteHeaders(wp, -1, 0);
websWriteHeader(wp, "Content-Type", "text/plain");
websWriteEndHeaders(wp);
/***
*
/
if (scaselessmatch(wp->method, "POST")) {
for (s = hashFirst(wp->files); s; s = hashNext(wp->files, s)) {
up = s->content.value.symbol;
websWrite(wp, "FILE: %s\r
", s->name.value.string);
websWrite(wp, "FILENAME=%s\r
", up->filename);
websWrite(wp, "CLIENT=%s\r
", up->clientFilename);
websWrite(wp, "TYPE=%s\r
", up->contentType);
websWrite(wp, "SIZE=%d\r
", up->size);
upfile = sfmt("%s/tmp/%s", websGetDocuments(), up->clientFilename);//
if(access(up->filename, 0) !=0)
{
error("uploadTest() %s DOESN'T EXISIT!",up->filename);
}
if(access(upfile, 0) !=0)
{
error("uploadTest() %s DOESN'T EXISIT!",upfile);
}
if (rename(up->filename, upfile) < 0)
{
error("Cannot rename uploaded file: %s to %s, errno %d", up->filename, upfile, errno);
}
wfree(upfile);
}
websWrite(wp, "\r
VARS:\r
");
for (s = hashFirst(wp->vars); s; s = hashNext(wp->vars, s))
{
websWrite(wp, "%s=%s\r
", s->name.value.string, s->content.value.string);
}
}
websDone(wp);
}
if (wp->rxLen > ME_GOAHEAD_LIMIT_POST) {
websError(wp, HTTP_CODE_REQUEST_TOO_LARGE | WEBS_CLOSE, "Too big");
return;
}
2.フロントコード例
<html>
<head>
<meta charset="UTF-8">
<title>title>
head>
<body>
<form action="/action/uploadTest" method ="post" enctype="multipart/form-data">
<input type="file" name="files[]" multiple/>
<input type="submit" value=" ">
form>
body>
html>
3.結果