iOS multi-file upload
Last Update:2015-07-03
Source: Internet
Author: User
<span id="Label3"></p><p class="p1"><p class="p1"><span class="s1">/**</span></p></p><p class="p2"><p class="p2"><span class="s2">* <span class="s1">upload Multiple files</span></span></p></p><p class="p1"><p class="p1"><span class="s1">*</span></p></p><p class="p1"><p class="p1"><span class="s1">* @param URL <span class="s3">request interface address</span></span></p></p><p class="p1"><p class="p1"><span class="s1">* @param filedata <span class="s3">file name and data <span class="s1">(key:value)</span> </span></span></p></p><p class="p1"><p class="p1"><span class="s1">* @param btnname <span class="s3">upload Web page <span class="s1">btn (interface)</span> </span></span></p></p><p class="p1"><p class="p1"><span class="s1">* @param parms <span class="s3">additional upload parameters</span></span></p></p><p class="p1"><p class="p1"><span class="s1">*/</span></p></p><p class="p3"><p class="p3"><span class="s1">-(<span class="s4">void<span class="s1">) httpsenddatawithurl: (<span class="s5">nsstring<span class="s1">*) url data: (<span class="s5">nsdictionary<span class="s1">*) filedata name: ( <span class="s5"> NSString<span class="s1">*) btnname parms: (<span class="s5">nsdictionary<span class="s1">*) parms</span> </span> </span> </span> </span> </span> </span> </span> </span> </span></span></p></p><p class="p3"><p class="p3"><span class="s1">{</span></p></p><p class="p4"><p class="p4"><span class="s1"></span></p></p><p class="p3"><p class="p3"><span class="s1"><span class="s5">nsstring<span class="s1"> *httpurl=url;</span> </span></span></p></p><p class="p1"><p class="p1"><span class="s6"><span class="s1">//---------------------- <span class="s3">The URL of the Post method <span class="s1">and the <span class="s3">request header <span class="s1">-----------</span> </span> </span> </span> </span></span></p></p><p class="p5"><p class="p5"><span class="s6"><span class="s1">nsmutableurlrequest<span class="s6"> *mrequest=[<span class="s1">nsmutableurlrequest<span class="s6"> <span class="s1">requestwithurl<span class="s6">: [<span class="s1"><span class="s6"> Nsurl <span class="s1"> URLWithString<span class="s6">: httpurl]];</span> </span> </span> </span> </span> </span> </span> </span> </span> </span></span></p></p><p class="p3"><p class="p3"><span class="s1">Mrequest. <span class="s5">HttpMethod<span class="s1">=<span class="s7">@ "post"<span class="s1">;</span> </span> </span> </span></span></p></p><p class="p1"><p class="p1"><span class="s6"><span class="s1">//content-type:multipart/form-data, BOUNDARY=----WEBKITFORMBOUNDARYWRKPBY4PBAPPMCFC</span></span></p></p><p class="p6"><p class="p6"><span class="s6"><span class="s5">nsstring<span class="s6"> *str=[<span class="s5">nsstring<span class="s6"> <span class="s5">stringwithformat<span class="s6">:<span class="s1">@ "multipart/form-data; boundary=%@"<span class="s6">, <span class="s8"> Keyward<span class="s6">];</span> </span> </span> </span> </span> </span> </span> </span> </span> </span></span></p></p><p class="p5"><p class="p5"><span class="s6">[mrequest <span class="s1">setValue<span class="s6">: str <span class="s1">forhttpheaderfield<span class="s6"> :<span class="s7">@ "content-type"<span class="s6">];</span> </span> </span> </span> </span> </span></span></p></p><p class="p3"><p class="p3"><span class="s1">Mrequest. <span class="s5">httpbody<span class="s1">=[<span class="s4">self<span class="s1"> <span class="s9">makebodydata<span class="s1">: filedata <span class="s9">name<span class="s1">: Btnname <span class="s9">parms<span class="s1">:p arms];</span> </span> </span> </span></span></span></span></span></span></span></span></p></p><p class="p4"><p class="p4"><span class="s1"></span></p></p><p class="p1"><p class="p1"><span class="s6"><span class="s1">//---------------------- <span class="s3">The URL of the Post method <span class="s1">and the <span class="s3">request header <span class="s1">-----------</span> </span> </span> </span> </span></span></p></p><p class="p5"><p class="p5"><span class="s6">[<span class="s1">nsurlconnection<span class="s6"> <span class="s1">sendasynchronousrequest<span class="s6">: mrequest <span class="s1">queue<span class="s6">: [<span class="s1">nsoperationqueue<span class="s6"> <span class="s1"> Mainqueue<span class="s6">] <span class="s1">completionhandler<span class="s6">: ^ (<span class="s1">nsurlresponse<span class="s6"> *response, <span class="s1">nsdata<span class="s6"> *data, <span class="s1"> Nserror<span class="s6"> *connectionerror) {</span> </span> </span> </span> </span> </span> </span> </span> </span> </span> </span> </span> </span> </span> </span></span></span></span></span></p></p><p class="p3"><p class="p3"><span class="s1"><span class="s4">if<span class="s1"> (!connectionerror) {</span> </span></span></p></p><p class="p3"><p class="p3"><span class="s1"><span class="s5">nshttpurlresponse<span class="s1"> *httpresponse = (<span class="s5">nshttpurlresponse<span class="s1"> *) response;</span> </span> </span> </span></span></p></p><p class="p3"><p class="p3"><span class="s1"><span class="s4">if<span class="s1"> (httpresponse. <span class="s5"> StatusCode<span class="s1"> = <span class="s10">=<span class="s1">) {</span> </span> </span> </span> </span> </span></span></p></p><p class="p3"><p class="p3"><span class="s1"><span class="s5">nserror<span class="s1"> *error=<span class="s4">nil<span class="s1">;</span> </span> </span> </span></span></p></p><p class="p5"><p class="p5"><span class="s6"><span class="s4">ID<span class="s6"> json = [<span class="s1">nsjsonserialization<span class="s6"> <span class="s1">jsonobjectwithdata<span class="s6">:d ata <span class="s1">options<span class="s6">:<span class="s10">0<span class="s6"> <span class="s1">Error <span class="s6">:&error];</span> </span> </span> </span> </span> </span> </span> </span> </span> </span> </span> </span></span></p></p><p class="p3"><p class="p3"><span class="s1"><span class="s4">if<span class="s1"> (error) {</span> </span></span></p></p><p class="p3"><p class="p3"><span class="s1"><span class="s5">NSLog<span class="s1">(<span class="s7">@ "json <span class="s11">parsing error <span class="s7">!!!!!!" <span class="s1">);</span></span></span></span></span></span></span></p></p><p class="p3"><p class="p3"><span class="s1">}</span></p></p><p class="p3"><p class="p3"><span class="s1"><span class="s4">Else</span></span></p></p><p class="p3"><p class="p3"><span class="s1">{</span></p></p><p class="p3"><p class="p3"><span class="s1"><span class="s5">NSLog<span class="s1">(<span class="s7">@ "%@"<span class="s1">, json);</span> </span> </span> </span></span></p></p><p class="p3"><p class="p3"><span class="s1">}</span></p></p><p class="p3"><p class="p3"><span class="s1">}<span class="s4">Else<span class="s1">{</span> </span></span></p></p><p class="p3"><p class="p3"><span class="s1"><span class="s5">NSLog<span class="s1">(<span class="s7">@ " <span class="s11">Server Internal Error <span class="s7">"<span class="s1">);</span> </span> </span> </span> </span> </span></span></p></p><p class="p3"><p class="p3"><span class="s1">}</span></p></p><p class="p3"><p class="p3"><span class="s1">}<span class="s4">Else<span class="s1">{</span> </span></span></p></p><p class="p3"><p class="p3"><span class="s1"><span class="s5">NSLog<span class="s1">(<span class="s7">@ " <span class="s11">request error <span class="s7">%@"<span class="s1">, connectionerror);</span> </span> </span> </span> </span> </span></span></p></p><p class="p3"><p class="p3"><span class="s1">}</span></p></p><p class="p4"><p class="p4"><span class="s1"></span></p></p><p class="p3"><p class="p3"><span class="s1">}];</span></p></p><p class="p4"><p class="p4"><span class="s1"></span></p></p><p class="p3"><p class="p3"><span class="s1">}</span></p></p><p class="p3"><p class="p3"><span class="s1">-(<span class="s5">nsdata<span class="s1">*) makebodydata: (<span class="s5">nsdictionary<span class="s1">*) filedata name: (<span class="s5">nsstring<span class="s1">*) btnname parms: ( <span class="s5"> Nsdictionary<span class="s1">*) parms</span> </span> </span> </span> </span> </span> </span> </span></span></p></p><p class="p3"><p class="p3"><span class="s1">{</span></p></p><p class="p5"><p class="p5"><span class="s6"><span class="s1">nsmutabledata<span class="s6"> *mdata = [<span class="s1">nsmutabledata<span class="s6"> <span class="s1">data<span class="s6">];</span> </span> </span> </span> </span> </span></span></p></p><p class="p1"><p class="p1"><span class="s6"><span class="s1">// <span class="s3">Prepare documents</span> </span></span></p></p><p class="p5"><p class="p5"><span class="s6">[filedata <span class="s1">enumeratekeysandobjectsusingblock<span class="s6">: ^ (<span class="s1">nsstring<span class="s6"> *key, <span class="s1">nsdata<span class="s6"> *data, <span class="s4">BOOL<span class="s6"> * stop) {</span> </span> </span> </span> </span> </span> </span> </span></span></p></p><p class="p1"><p class="p1"><span class="s6"><span class="s1">//------webkitformboundarycwujbgnwchuhgprt</span></span></p></p><p class="p1"><p class="p1"><span class="s6"><span class="s1">//content-disposition:form-data; name= "userfile["; filename= "snip20150701_10.png"</span></span></p></p><p class="p1"><p class="p1"><span class="s6"><span class="s1">//content-type:image/png</span></span></p></p><p class="p3"><p class="p3"><span class="s1"><span class="s12">//1</span></span></p></p><p class="p5"><p class="p5"><span class="s6"><span class="s1">nsmutablestring<span class="s6"> *mstr = [<span class="s1">nsmutablestring<span class="s6"> <span class="s1">string<span class="s6">];</span> </span> </span> </span> </span> </span></span></p></p><p class="p3"><p class="p3"><span class="s1">[mstr <span class="s5">AppendFormat<span class="s1">:<span class="s7">@ "\r\n--%@\r\n"<span class="s1">,<span class="s8">keyward<span class="s1">];</span> </span> </span> </span> </span> </span></span></p></p><p class="p6"><p class="p6"><span class="s6">[mstr <span class="s5">AppendFormat<span class="s6">:<span class="s1">@ "content-disposition:form-data; name=\"%@\ "; filename=\"%@\ "\ r \ n"<span class="s6">, Btnname , key];</span> </span> </span> </span></span></p></p><p class="p6"><p class="p6"><span class="s6">[mstr <span class="s5">appendString<span class="s6">:<span class="s1">@ "application/octet-stream\r\n"<span class="s6">];</span> </span> </span> </span></span></p></p><p class="p3"><p class="p3"><span class="s1">[mstr <span class="s5">appendString<span class="s1">:<span class="s7">@ "\ r \ n"<span class="s1">];</span> </span> </span> </span></span></p></p><p class="p5"><p class="p5"><span class="s6">[mdata <span class="s1">appendData<span class="s6">: [mstr <span class="s1">datausingencoding<span class="s6">:<span class="s1">nsutf8stringencoding<span class="s6">]];</span> </span> </span> </span> </span></span></span></p></p><p class="p3"><p class="p3"><span class="s1"><span class="s12">//2</span></span></p></p><p class="p3"><p class="p3"><span class="s1">[mdata <span class="s5">appendData<span class="s1">:d ata];</span> </span></span></p></p><p class="p4"><p class="p4"><span class="s1"></span></p></p><p class="p3"><p class="p3"><span class="s1">}];</span></p></p><p class="p4"><p class="p4"><span class="s1"></span></p></p><p class="p4"><p class="p4"><span class="s1"></span></p></p><p class="p4"><p class="p4"><span class="s1"></span></p></p><p class="p2"><p class="p2"><span class="s13"><span class="s2">// <span class="s1">prepare data in the form</span> </span></span></p></p><p class="p5"><p class="p5"><span class="s6">[parms <span class="s1">enumeratekeysandobjectsusingblock<span class="s6">: ^ (<span class="s1">nsstring<span class="s6"> *key, <span class="s1">nsstring<span class="s6"> *value, <span class="s4">BOOL <span class="s6">*STOP) {</span></span></span></span></span></span></span></span></span></p></p><p class="p1"><p class="p1"><span class="s6"><span class="s1">//------webkitformboundarycwujbgnwchuhgprt</span></span></p></p><p class="p1"><p class="p1"><span class="s6"><span class="s1">//content-disposition:form-data; name= "username"</span></span></p></p><p class="p3"><p class="p3"><span class="s1"><span class="s12">//</span></span></p></p><p class="p1"><p class="p1"><span class="s6"><span class="s1">//345345</span></span></p></p><p class="p4"><p class="p4"><span class="s1"></span></p></p><p class="p4"><p class="p4"><span class="s1"></span></p></p><p class="p5"><p class="p5"><span class="s6"><span class="s1">nsmutablestring<span class="s6"> *mstr = [<span class="s1">nsmutablestring<span class="s6"> <span class="s1">string<span class="s6">];</span> </span> </span> </span> </span> </span></span></p></p><p class="p3"><p class="p3"><span class="s1">[mstr <span class="s5">AppendFormat<span class="s1">:<span class="s7">@ "\r\n--%@\r\n"<span class="s1">,<span class="s8">keyward<span class="s1">];</span> </span> </span> </span> </span> </span></span></p></p><p class="p6"><p class="p6"><span class="s6">[mstr <span class="s5">AppendFormat<span class="s6">:<span class="s1">@ "content-disposition:form-data; name=\"%@\ "\ r \ n"<span class="s6">, key];</span> </span> </span> </span></span></p></p><p class="p3"><p class="p3"><span class="s1">[mstr <span class="s5">appendString<span class="s1">:<span class="s7">@ "\ r \ n"<span class="s1">];</span> </span> </span> </span></span></p></p><p class="p3"><p class="p3"><span class="s1">[mstr <span class="s5">AppendFormat<span class="s1">:<span class="s7">@ "%@\r\n"<span class="s1">, value];</span> </span> </span> </span></span></p></p><p class="p5"><p class="p5"><span class="s6">[mdata <span class="s1">appendData<span class="s6">: [mstr <span class="s1">datausingencoding<span class="s6">:<span class="s1">nsutf8stringencoding<span class="s6">]];</span> </span> </span> </span> </span> </span></span></p></p><p class="p4"><p class="p4"><span class="s1"></span></p></p><p class="p3"><p class="p3"><span class="s1">}];</span></p></p><p class="p4"><p class="p4"><span class="s1"></span></p></p><p class="p4"><p class="p4"><span class="s1"></span></p></p><p class="p4"><p class="p4"><span class="s1"></span></p></p><p class="p4"><p class="p4"><span class="s1"></span></p></p><p class="p5"><p class="p5"><span class="s6"><span class="s1">nsstring<span class="s6"> *end = [<span class="s1">nsstring<span class="s6"> <span class="s1">stringwithformat<span class="s6">:<span class="s7">@ "--%@--\r\n"<span class="s6">,<span class="s8">keyward<span class="s6">];</span> </span> </span></span></span></span></span></span></span></span></span></p></p><p class="p5"><p class="p5"><span class="s6">[mdata <span class="s1">appendData<span class="s6">: [end <span class="s1">datausingencoding<span class="s6">:<span class="s1">nsutf8stringencoding<span class="s6">];</span> </span> </span> </span> </span></span></span></p></p><p class="p3"><p class="p3"><span class="s1"><span class="s4">return<span class="s1"> Mdata. <span class="s5"> Copy<span class="s1">;</span> </span> </span> </span></span></p></p><p class="p4"><p class="p4"><span class="s1"></span></p></p><p class="p4"><p class="p4"><span class="s1"></span></p></p><p class="p3"><p class="p3"><span class="s1">}</span></p></p><p><p>iOS multi-file upload</p></p></span>