Browse Source

Added mg_send_file()

valenok 14 năm trước cách đây
mục cha
commit
5bbb6fbbd5
2 tập tin đã thay đổi với 15 bổ sung0 xóa
  1. 10 0
      mongoose.c
  2. 5 0
      mongoose.h

+ 10 - 0
mongoose.c

@@ -2567,6 +2567,16 @@ static void handle_file_request(struct mg_connection *conn, const char *path,
   (void) fclose(fp);
 }
 
+void mg_send_file(struct mg_connection *conn, const char *path) {
+  struct mgstat st;
+  if (mg_stat(path, &st) == 0) {
+    handle_file_request(conn, path, &st);
+  } else {
+    send_http_error(conn, 404, "Not Found", "%s", "File not found");
+  }
+}
+
+
 // Parse HTTP headers from the given buffer, advance buffer to the point
 // where parsing stopped.
 static void parse_http_headers(char **buf, struct mg_request_info *ri) {

+ 5 - 0
mongoose.h

@@ -158,6 +158,11 @@ int mg_write(struct mg_connection *, const void *buf, size_t len);
 int mg_printf(struct mg_connection *, const char *fmt, ...);
 
 
+// Send contents of the entire file together with HTTP headers.
+// Return 1 on success, 0 on error (e.g. file does not exist).
+void mg_send_file(struct mg_connection *conn, const char *path);
+
+
 // Read data from the remote end, return number of bytes read.
 int mg_read(struct mg_connection *, void *buf, size_t len);