[原创]Android提交表单并上传图片到web服务器

Android提交表单并上传图片到web服务器,直接上代码

用到了Apache的HttpClient.jar

 

<span class="pln">  </span><span class="com">/**
     * 提交表单并上传文件到网站
     * @param url 提交的接口
     * @param param 参数 <键,值>
     * @param bitmap 图片内容
     */</span><span class="pln">
    </span><span class="kwd">public</span><span class="pln"> </span><span class="kwd">static</span><span class="pln"> </span><span class="typ">String</span><span class="pln"> postForm</span><span class="pun">(</span><span class="typ">String</span><span class="pln"> url</span><span class="pun">,</span><span class="typ">Map</span><span class="pun"><</span><span class="typ">String</span><span class="pun">,</span><span class="pln"> </span><span class="typ">String</span><span class="pun">></span><span class="pln"> param</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bitmap</span><span class="pln"> bitmap</span><span class="pun">)</span><span class="pln">
    </span><span class="pun">{</span><span class="pln">
        </span><span class="kwd">try</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
            url</span><span class="pun">=</span><span class="str">"http://localhost:4657"</span><span class="pln"> </span><span class="pun">+</span><span class="pln">
                    </span><span class="str">"/api/SaveNeed"</span><span class="pun">;</span><span class="pln">
            </span><span class="typ">HttpPost</span><span class="pln"> post </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">HttpPost</span><span class="pun">(</span><span class="pln">url</span><span class="pun">);</span><span class="pln">
 
            </span><span class="typ">HttpClient</span><span class="pln"> client </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">DefaultHttpClient</span><span class="pun">();</span><span class="pln">
            </span><span class="typ">String</span><span class="pln"> BOUNDARY </span><span class="pun">=</span><span class="pln"> </span><span class="str">"*****"</span><span class="pun">;</span><span class="pln"> </span><span class="com">// 边界标识</span><span class="pln">
            </span><span class="typ">MultipartEntity</span><span class="pln"> entity </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">MultipartEntity</span><span class="pun">(</span><span class="pln">
                    </span><span class="typ">HttpMultipartMode</span><span class="pun">.</span><span class="pln">BROWSER_COMPATIBLE</span><span class="pun">,</span><span class="pln"> BOUNDARY</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">null</span><span class="pun">);</span><span class="pln">
            </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">param </span><span class="pun">!=</span><span class="pln"> </span><span class="kwd">null</span><span class="pln"> </span><span class="pun">&&</span><span class="pln"> </span><span class="pun">!</span><span class="pln">param</span><span class="pun">.</span><span class="pln">isEmpty</span><span class="pun">())</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
 
                entity</span><span class="pun">.</span><span class="pln">addPart</span><span class="pun">(</span><span class="str">"needList"</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">StringBody</span><span class="pun">(</span><span class="pln">
                        param</span><span class="pun">.</span><span class="kwd">get</span><span class="pun">(</span><span class="str">"needList"</span><span class="pun">),</span><span class="pln"> </span><span class="typ">Charset</span><span class="pun">.</span><span class="pln">forName</span><span class="pun">(</span><span class="str">"UTF-8"</span><span class="pun">)));</span><span class="pln">
 
            </span><span class="pun">}</span><span class="pln">
 
            saveImageFile</span><span class="pun">(</span><span class="pln">bitmap</span><span class="pun">);</span><span class="pln">
            </span><span class="typ">String</span><span class="pln"> path </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Environment</span><span class="pun">.</span><span class="pln">getExternalStorageDirectory</span><span class="pun">()</span><span class="pln">
                    </span><span class="pun">+</span><span class="pln"> </span><span class="str">"/temple/temp.jpg"</span><span class="pun">;</span><span class="pln">
            </span><span class="typ">File</span><span class="pln"> file </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">File</span><span class="pun">(</span><span class="pln">path</span><span class="pun">);</span><span class="pln">
            </span><span class="com">// 添加文件参数</span><span class="pln">
            </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">file </span><span class="pun">!=</span><span class="pln"> </span><span class="kwd">null</span><span class="pln"> </span><span class="pun">&&</span><span class="pln"> file</span><span class="pun">.</span><span class="pln">exists</span><span class="pun">())</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
 
                entity</span><span class="pun">.</span><span class="pln">addPart</span><span class="pun">(</span><span class="str">"file"</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">FileBody</span><span class="pun">(</span><span class="pln">file</span><span class="pun">));</span><span class="pln">
            </span><span class="pun">}</span><span class="pln">
 
            post</span><span class="pun">.</span><span class="pln">setEntity</span><span class="pun">(</span><span class="pln">entity</span><span class="pun">);</span><span class="pln">
 
            </span><span class="typ">HttpResponse</span><span class="pln"> response</span><span class="pun">;</span><span class="pln">
 
            response </span><span class="pun">=</span><span class="pln"> client</span><span class="pun">.</span><span class="pln">execute</span><span class="pun">(</span><span class="pln">post</span><span class="pun">);</span><span class="pln">
 
            </span><span class="kwd">int</span><span class="pln"> stateCode </span><span class="pun">=</span><span class="pln"> response</span><span class="pun">.</span><span class="pln">getStatusLine</span><span class="pun">().</span><span class="pln">getStatusCode</span><span class="pun">();</span><span class="pln">
            </span><span class="typ">StringBuffer</span><span class="pln"> sb </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">StringBuffer</span><span class="pun">();</span><span class="pln">
            </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">stateCode </span><span class="pun">==</span><span class="pln"> </span><span class="typ">HttpStatus</span><span class="pun">.</span><span class="pln">SC_OK</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
                </span><span class="typ">HttpEntity</span><span class="pln"> result </span><span class="pun">=</span><span class="pln"> response</span><span class="pun">.</span><span class="pln">getEntity</span><span class="pun">();</span><span class="pln">
                </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">result </span><span class="pun">!=</span><span class="pln"> </span><span class="kwd">null</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
                    </span><span class="typ">InputStream</span><span class="pln"> </span><span class="kwd">is</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> result</span><span class="pun">.</span><span class="pln">getContent</span><span class="pun">();</span><span class="pln">
                    </span><span class="typ">BufferedReader</span><span class="pln"> br </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">BufferedReader</span><span class="pun">(</span><span class="pln">
                            </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">InputStreamReader</span><span class="pun">(</span><span class="kwd">is</span><span class="pun">));</span><span class="pln">
                    </span><span class="typ">String</span><span class="pln"> tempLine</span><span class="pun">;</span><span class="pln">
                    </span><span class="kwd">while</span><span class="pln"> </span><span class="pun">((</span><span class="pln">tempLine </span><span class="pun">=</span><span class="pln"> br</span><span class="pun">.</span><span class="pln">readLine</span><span class="pun">())</span><span class="pln"> </span><span class="pun">!=</span><span class="pln"> </span><span class="kwd">null</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
                        sb</span><span class="pun">.</span><span class="pln">append</span><span class="pun">(</span><span class="pln">tempLine</span><span class="pun">);</span><span class="pln">
                    </span><span class="pun">}</span><span class="pln">
                </span><span class="pun">}</span><span class="pln">
            </span><span class="pun">}</span><span class="pln">
            post</span><span class="pun">.</span><span class="pln">abort</span><span class="pun">();</span><span class="pln">
 
            </span><span class="kwd">return</span><span class="pln"> sb</span><span class="pun">.</span><span class="pln">toString</span><span class="pun">();</span><span class="pln">
        </span><span class="pun">}</span><span class="pln"> </span><span class="kwd">catch</span><span class="pln"> </span><span class="pun">(</span><span class="typ">ClientProtocolException</span><span class="pln"> e</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
            </span><span class="com">// TODO Auto-generated catch block</span><span class="pln">
            e</span><span class="pun">.</span><span class="pln">printStackTrace</span><span class="pun">();</span><span class="pln">
        </span><span class="pun">}</span><span class="pln"> </span><span class="kwd">catch</span><span class="pln"> </span><span class="pun">(</span><span class="typ">IOException</span><span class="pln"> e</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
            </span><span class="com">// TODO Auto-generated catch block</span><span class="pln">
            e</span><span class="pun">.</span><span class="pln">printStackTrace</span><span class="pun">();</span><span class="pln">
        </span><span class="pun">}</span><span class="pln"> </span><span class="kwd">catch</span><span class="pln"> </span><span class="pun">(</span><span class="typ">Exception</span><span class="pln"> e</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
            </span><span class="com">// TODO Auto-generated catch block</span><span class="pln">
            e</span><span class="pun">.</span><span class="pln">printStackTrace</span><span class="pun">();</span><span class="pln">
        </span><span class="pun">}</span><span class="pln">
        </span><span class="kwd">return</span><span class="pln"> </span><span class="kwd">null</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span>
赞(0) 打赏
分享到: 更多 (0)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

登录

注册