Keith,
You've written POST, but your form has method="PUT". I believe that's
where the 405 is coming from. When I tested with Firefox, it appeared to
silently rewrite that as a "GET". If you are using IE, the results might
be different: perhaps it's sending the PUT, and your form-handling code
is throwing an error?
If fixing the action doesn't help, then I'd recommend looking harder at
your code and configuration. I was able to put together a simple test
case that worked without a 405 (even when using method="PUT", which
Firefox rewrote as a GET).
(: /form.xqy :)
xdmp:set-response-content-type("text/html"),
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>test</title>
</head>
<body>
<form action="/file" method="put" enctype="multipart/form-data"
target="_self">
<p>
Add file to folder:
<input type="file" class="name" name="name"/>
<input type="submit" value="Add"/>
</p>
</form>
</body>
</html>
(: test rewriter :)
let $path := xdmp:get-request-path()
let $d := xdmp:log(text {
xdmp:get-request-method(),
xdmp:get-request-path() })
return
if ($path eq '/file') then '/form.xqy'
else $path
-- Mike
On 2009-10-26 09:38, Keith L. Breinholt wrote:
I’m trying to POST a file to an web service interface that I’ve written. The
webservice uses a URL rewriter that translates the web service URLs to the
actual code that will do the work and hides the actual .xqy extensions from the
end users.
So we have some application code that does a post like this:
<form action="/file" method="put" enctype="multipart/form-data"
target="_self">
<p>Add file to folder:<input type="file" class="name" name="name"/><input type="submit"
value="Add"/></p>
</form>
In the rewriter the URL PUT or POST of ‘/file?uri=foo.xml’ gets translated to
something like ‘/file/receive.xqy?uri=foo.xml’
However, the URL rewriter never receives the request and the browser gets a 405
(Method Not Allowed) error from MarkLogic.
If I change the action of the form to go directly at the XQuery file
‘/file/receive.xqy?uri=foo.xml’ I don’t get the error and everything is fine.
Two questions: Why is MarkLogic intercepting all POST calls in the first place?
And second, if there is a good reason then why does MarkLogic intercept POST
calls before the rewriter instead of after when it actually knows where it is
headed?
Keith L. Breinholt
ICS Content& Media
[email protected]<mailto:[email protected]>
"Do what you can, with what you have, where you are." Theodore Roosevelt
NOTICE: This email message is for the sole use of the intended recipient(s) and
may contain confidential and privileged information. Any unauthorized review,
use, disclosure or distribution is prohibited. If you are not the intended
recipient, please contact the sender by reply email and destroy all copies of
the original message.
_______________________________________________
General mailing list
[email protected]
http://xqzone.com/mailman/listinfo/general