]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
added example that makes an upload to a file:// url
authorDaniel Stenberg <daniel@haxx.se>
Wed, 26 May 2004 09:00:03 +0000 (09:00 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Wed, 26 May 2004 09:00:03 +0000 (09:00 +0000)
docs/examples/Makefile.am
docs/examples/fileupload.c [new file with mode: 0644]

index e42a9600f350571f4dd0f9c0a953df5be237c627..e81e4b8401376d0332e4e38f7417e2826a17562f 100644 (file)
@@ -9,7 +9,7 @@ EXTRA_DIST = README curlgtk.c sepheaders.c simple.c postit2.c           \
  ftpupload.c httpput.c simplessl.c ftpgetresp.c http-post.c            \
  post-callback.c multi-app.c multi-double.c multi-single.c             \
  multi-post.c fopen.c simplepost.c makefile.dj curlx.c https.c         \
- multi-debugcallback.c
+ multi-debugcallback.c fileupload.c
 
 all:
        @echo "done"
diff --git a/docs/examples/fileupload.c b/docs/examples/fileupload.c
new file mode 100644 (file)
index 0000000..315c2a1
--- /dev/null
@@ -0,0 +1,65 @@
+/*****************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * $Id$
+ */
+
+#include <stdio.h>
+#include <curl/curl.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+
+int main(void)
+{
+  CURL *curl;
+  CURLcode res;
+  curl_off_t size;
+  struct stat file_info;
+  double speed_upload, total_time;
+  FILE *fd;
+
+  fd = fopen("debugit", "r"); /* open file to upload */
+  if(!fd) {
+
+    return 1; /* can't continue */
+  }
+
+  stat("debugit", &file_info); /* to get the file size */
+
+  curl = curl_easy_init();
+  if(curl) {
+    /* upload to this place */
+    curl_easy_setopt(curl, CURLOPT_URL,
+                     "file:///home/dast/src/curl/debug/new");
+
+    /* tell it to "upload" to the URL */
+    curl_easy_setopt(curl, CURLOPT_UPLOAD, 1);
+
+    /* set where to read from (on Windows you need to use READFUNCTION too) */
+    curl_easy_setopt(curl, CURLOPT_READDATA, fd);
+
+    /* and give the size of the upload (optional) */
+    curl_easy_setopt(curl, CURLOPT_INFILESIZE_LARGE,
+                     (curl_off_t)file_info.st_size);
+
+    /* enable verbose for easier tracing */
+    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1);
+
+    res = curl_easy_perform(curl);
+
+    /* now extract transfer info */
+    curl_easy_getinfo(curl, CURLINFO_SPEED_UPLOAD, &speed_upload);
+    curl_easy_getinfo(curl, CURLINFO_TOTAL_TIME, &total_time);
+
+    fprintf(stderr, "Speed: %.3f bytes/sec during %.3f seconds\n",
+            speed_upload, total_time);
+
+    /* always cleanup */
+    curl_easy_cleanup(curl);
+  }
+  return 0;
+}