Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
M
mongoose
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
esp
mongoose
Commits
ceb2f1da
Commit
ceb2f1da
authored
8 years ago
by
Sergey Lyubka
Committed by
Cesanta Bot
8 years ago
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Update upload example
PUBLISHED_FROM=a28c1da3f0dd597792439246313ca39984ab7536
parent
aab857a6
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
18 additions
and
52 deletions
+18
-52
big_upload.c
examples/big_upload/big_upload.c
+9
-52
index.html
examples/big_upload/index.html
+9
-0
No files found.
examples/big_upload/big_upload.c
View file @
ceb2f1da
...
...
@@ -17,22 +17,6 @@ struct file_writer_data {
size_t
bytes_written
;
};
static
void
handle_request
(
struct
mg_connection
*
nc
)
{
// This handler gets for all endpoints but /upload
mg_printf
(
nc
,
"%s"
,
"HTTP/1.1 200 OK
\r\n
"
"Content-Type: text/html
\r\n
"
"Connection: close
\r\n
"
"
\r\n
"
"<html><body>Upload example."
"<form method=
\"
POST
\"
action=
\"
/upload
\"
"
" enctype=
\"
multipart/form-data
\"
>"
"<input type=
\"
file
\"
name=
\"
file
\"
/> <br/>"
"<input type=
\"
submit
\"
value=
\"
Upload
\"
/>"
"</form></body></html>"
);
nc
->
flags
|=
MG_F_SEND_AND_CLOSE
;
}
static
void
handle_upload
(
struct
mg_connection
*
nc
,
int
ev
,
void
*
p
)
{
struct
file_writer_data
*
data
=
(
struct
file_writer_data
*
)
nc
->
user_data
;
struct
mg_http_multipart_part
*
mp
=
(
struct
mg_http_multipart_part
*
)
p
;
...
...
@@ -83,54 +67,27 @@ static void handle_upload(struct mg_connection *nc, int ev, void *p) {
}
static
void
ev_handler
(
struct
mg_connection
*
nc
,
int
ev
,
void
*
ev_data
)
{
(
void
)
ev_data
;
if
(
ev
==
MG_EV_HTTP_REQUEST
)
{
mg_printf
(
nc
,
"%s"
,
"HTTP/1.1 200 OK
\r\n
"
"Content-Type: text/html
\r\n
"
"Connection: close
\r\n
"
"
\r\n
"
"<html><body>Upload example."
"Navigate to <a "
"href=
\"
simple_upload_demo
\"
>/simple_upload_demo</a> for "
"uploading using submit "
"or to <a href=
\"
/ajax_upload_demo
\"
>/ajax_upload_demo</a> for "
"uploading using ajax"
"</form></body></html>"
);
nc
->
flags
|=
MG_F_SEND_AND_CLOSE
;
}
}
static
void
upload_demo_handler
(
struct
mg_connection
*
nc
,
int
ev
,
void
*
p
)
{
if
(
ev
==
MG_EV_HTTP_REQUEST
)
{
(
void
)
p
;
handle_request
(
nc
);
}
}
static
void
ajax_demo_handler
(
struct
mg_connection
*
nc
,
int
ev
,
void
*
p
)
{
if
(
ev
==
MG_EV_HTTP_REQUEST
)
{
mg_serve_http
(
nc
,
(
struct
http_message
*
)
p
,
s_http_server_opts
);
mg_serve_http
(
nc
,
ev_data
,
s_http_server_opts
);
}
}
int
main
(
void
)
{
struct
mg_mgr
mgr
;
struct
mg_connection
*
n
c
;
struct
mg_connection
*
c
;
mg_mgr_init
(
&
mgr
,
NULL
);
nc
=
mg_bind
(
&
mgr
,
s_http_port
,
ev_handler
);
c
=
mg_bind
(
&
mgr
,
s_http_port
,
ev_handler
);
if
(
c
==
NULL
)
{
fprintf
(
stderr
,
"Cannot start server on port %s
\n
"
,
s_http_port
);
exit
(
EXIT_FAILURE
);
}
s_http_server_opts
.
document_root
=
"."
;
// Serve current directory
mg_register_http_endpoint
(
nc
,
"/upload"
,
handle_upload
MG_UD_ARG
(
NULL
));
mg_register_http_endpoint
(
nc
,
"/ajax_upload_demo"
,
ajax_demo_handler
MG_UD_ARG
(
NULL
));
mg_register_http_endpoint
(
nc
,
"/simple_upload_demo"
,
upload_demo_handler
MG_UD_ARG
(
NULL
));
mg_register_http_endpoint
(
c
,
"/upload"
,
handle_upload
MG_UD_ARG
(
NULL
));
// Set up HTTP server parameters
mg_set_protocol_http_websocket
(
n
c
);
mg_set_protocol_http_websocket
(
c
);
printf
(
"Starting web server on port %s
\n
"
,
s_http_port
);
for
(;;)
{
...
...
This diff is collapsed.
Click to expand it.
examples/big_upload/
ajax_upload_demo/
index.html
→
examples/big_upload/index.html
View file @
ceb2f1da
...
...
@@ -35,6 +35,15 @@
</head>
<body>
<h1>
Upload file using standard form upload
</h1>
<form
method=
"POST"
action=
"/upload"
enctype=
"multipart/form-data"
>
<label>
Select a file:
</label><br>
<input
type=
"file"
name=
"file"
/>
<input
type=
"submit"
value=
"Upload"
/>
</form>
<h1>
Upload file using Ajax - that also gives progress report
</h1>
<form
method=
"post"
id=
"filename"
name=
"filename"
onsubmit=
"return uploadFile();"
>
<label>
Select a file:
</label><br>
<input
type=
"file"
id=
"file"
name=
"file"
required
/>
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment