From 6afe50e2aa14bba047065f6f24cb3382ed1a035c Mon Sep 17 00:00:00 2001 From: Brian Warner Date: Tue, 5 Feb 2008 21:44:40 -0700 Subject: [PATCH] webish: add upload/view-uri forms (not associated with any particular directory) to the welcome page. Document POST /uri?t=upload . --- docs/webapi.txt | 23 +++++++++++++------ src/allmydata/test/test_web.py | 2 +- src/allmydata/web/welcome.xhtml | 8 +++++-- src/allmydata/webish.py | 40 +++++++++++++++++++++++++++------ 4 files changed, 56 insertions(+), 17 deletions(-) diff --git a/docs/webapi.txt b/docs/webapi.txt index 1affc843..2526266b 100644 --- a/docs/webapi.txt +++ b/docs/webapi.txt @@ -166,12 +166,19 @@ f. uploading a file PUT http://localhost:8123/uri - in: file contents - out: file write cap + in: file contents + out: file write cap + + Upload a file, using the data from the HTTP request body, and returning + the resulting URI as the HTTP response body. This does not make the file + visible from the virtual drive -- to do that, see section 1.h. below, or + the convenience method in section 2.a.. + + POST http://localhost:8123/uri?t=upload - Upload a file, returning its URI as the HTTP response body. This does not - make the file visible from the virtual drive -- to do that, see section - 1.h. below, or the convenience method in section 2.a.. + This action also uploads a file without attaching it to a virtual drive + directory, but can be used from an HTML form. The response is the file + write cap. g. creating a new directory @@ -347,7 +354,8 @@ c. POST forms (browsers do not know how to do PUT or DELETE). The file's contents and the new child name will be included in the form's arguments. This can only be used to upload a single file at a time. To avoid confusion, name= is not - allowed to contain a slash (a 400 Bad Request error will result). + allowed to contain a slash (a 400 Bad Request error will result). The + response is the file read-cap (URI) of the resulting file. POST $URL @@ -359,7 +367,8 @@ c. POST forms This instructs the node to upload a file into the given directory, using a mutable file (SSK) rather than the usual immutable file (CHK). As a result, further operations to the same $URL will not cause the identity of the file - to change. + to change. The response is the file write-cap (URI) of the resulting + mutable file. POST $URL diff --git a/src/allmydata/test/test_web.py b/src/allmydata/test/test_web.py index fa5ed141..3290e7da 100644 --- a/src/allmydata/test/test_web.py +++ b/src/allmydata/test/test_web.py @@ -1191,7 +1191,7 @@ class Web(WebMixin, unittest.TestCase): # Fetch the welcome page. d = self.GET("/") def _after_get_welcome_page(res): - MKDIR_BUTTON_RE=re.compile('
', re.I) + MKDIR_BUTTON_RE=re.compile('', re.I) mo = MKDIR_BUTTON_RE.search(res) formaction = mo.group(1) formt = mo.group(2) diff --git a/src/allmydata/web/welcome.xhtml b/src/allmydata/web/welcome.xhtml index 9967fc6c..ecd35496 100644 --- a/src/allmydata/web/welcome.xhtml +++ b/src/allmydata/web/welcome.xhtml @@ -56,8 +56,12 @@ tool may also be useful. -
-
+
+ +
+
+
+
diff --git a/src/allmydata/webish.py b/src/allmydata/webish.py index f7989a80..7547b3a6 100644 --- a/src/allmydata/webish.py +++ b/src/allmydata/webish.py @@ -1398,29 +1398,55 @@ class Root(rend.Page): return ctx.tag - # this is a form where users can download files by URI def render_download_form(self, ctx, data): + # this is a form where users can download files by URI form = T.form(action="uri", method="get", enctype="multipart/form-data")[ T.fieldset[ - T.legend(class_="freeform-form-label")["download a file"], - "URI of file to download: ", + T.legend(class_="freeform-form-label")["Download a file"], + "URI to download: ", T.input(type="text", name="uri"), " ", "Filename to download as: ", T.input(type="text", name="filename"), " ", - T.input(type="submit", value="download"), + T.input(type="submit", value="Download!"), + ]] + return T.div[form] + + def render_view_form(self, ctx, data): + # this is a form where users can download files by URI, or jump to a + # named directory + form = T.form(action="uri", method="get", + enctype="multipart/form-data")[ + T.fieldset[ + T.legend(class_="freeform-form-label")["View a file or directory"], + "URI to view: ", + T.input(type="text", name="uri"), " ", + T.input(type="submit", value="View!"), + ]] + return T.div[form] + + def render_upload_form(self, ctx, data): + # this is a form where users can upload unlinked files + form = T.form(action="uri", method="post", + enctype="multipart/form-data")[ + T.fieldset[ + T.legend(class_="freeform-form-label")["Upload a file"], + "Choose a file: ", + T.input(type="file", name="file", class_="freeform-input-file"), + T.input(type="hidden", name="t", value="upload"), + T.input(type="submit", value="Upload!"), ]] return T.div[form] - # this is a form where users can create new directories def render_mkdir_form(self, ctx, data): + # this is a form where users can create new directories form = T.form(action="uri", method="post", enctype="multipart/form-data")[ T.fieldset[ - T.legend(class_="freeform-form-label")["create a directory"], + T.legend(class_="freeform-form-label")["Create a directory"], T.input(type="hidden", name="t", value="mkdir"), T.input(type="hidden", name="redirect_to_result", value="true"), - T.input(type="submit", value="create"), + T.input(type="submit", value="Create Directory!"), ]] return T.div[form] -- 2.45.2