PHP upload file using PUT instead of POST
I read something about this on PHP docs, but it's not clear to me:
Do the most widely used browsers (IE, FF, Chrome, Safari, Opera, ...) support this
PUT
method to upload files?What HTML should I write to make the browser call the server via a
PUT
request? I mean do I need to write aFORM
with anINPUT
file field and just replace the attributemethod="POST"
withmethod="PUT"
?On the PHP docs (link above) they say a
PUT
requ开发者_如何学运维est is much simpler than aPOST
request when uploading file, along with this advantage, what other advantages/disadvanatges do thePUT
has got compared to thePOST
?
The PUT method cannot be used from a <form>. MSIE does not support it through the user GUI at all. You can however use XMLHttpRequest. It seems to be defined in the standard and WHATWG / HTML5. My browser (Opera) obviously likes it.
http://old.mnot.net/javascript/xmlhttprequest/ IE might work too, as a short Google search suggests. And Firefox looks fine. Not checked Chrome or Webkit.
Server-site you need a specially designated script to handle an incoming PUT request. Look into the Apache docs. A mod_rewrite rule might usually do. The genral adavantage of PUT is that there is no file encoding / marshalling into a multipart/* mime type required. In theory this allows uploading larger files more reliably. Allthough if you use PHP, it won't help you much. It's meant for Webservers with WebDAV support and/or direct filesystem write access. (Apache can save uploaded files itself, if you use that.)
I think the method is supported by most major browsers, but you can't account for every browser and other client that is out there. From a cursory look at the user contributed notes, this sometimes even needs server-side configuration to work.
Also, handling any additional form values you may want to send along with your file becomes more difficult.
I wouldn't use it. Way too much possible hassle for little actual gain.
The fact that PUT
is rarely used for the purpose and only supported by major browsers excludes it from the any possible use here.
PUT
is not very widely supported by browsers, and isn't generally used for interactive HTML forms.
精彩评论