Android下的应用编程——用HTTP协议实现文件上传功能

news/2024/7/7 13:21:18

 

【文章作者】曾健生

【作者邮箱】zengjiansheng1@126.com

【作者QQ】190678908

【作者MSN】zengjiansheng1@hotmail.com

【作者博客】blog.csdn.net/newjueqi

 

 

*******************************************************************************

      在Android的客户端编程中(特别是SNS 类型的客户端),经常需要实现注册功能Activity,要用户输入用户名,密码,邮箱,照片后注册。但这时就有一个问题,在HTML中用form表单就能实现如上的注册表单,需要的信息会自动封装为完整的HTTP协议,但在Android中如何把这些参数和需要上传的文件封装为HTTP协议呢?

我们可以先做个试验,看一下form表单到底封装了什么样的信息。

 

第一步:编写一个Servlet,把接收到的HTTP信息保存在一个文件中,代码如下:

 

    public void doPost(HttpServletRequest request, HttpServletResponse response)

           throws ServletException, IOException {

 

       //获取输入流,是HTTP协议中的实体内容

       ServletInputStream  sis=request.getInputStream();

     

       //缓冲区

       byte buffer[]=new byte[1024];

      

       FileOutputStream fos=new FileOutputStream("d://file.log");

      

       int len=sis.read(buffer, 0, 1024);

      

       //把流里的信息循环读入到file.log文件中

       while( len!=-1 )

       {

           fos.write(buffer, 0, len);

           len=sis.readLine(buffer, 0, 1024);

       }

      

       fos.close();

       sis.close();

      

    }

 

第二步:实现如下图1的的表单页面,生成一个注册表单,提交到Servlet中

\

             

                                            图1

 

 

 

 

 详细的代码如下:

 

<form action="servlet/ReceiveFile" method="post" enctype="multipart/form-data">

    第一个参数<input type="text" name="name1"/> <br/>

    第二个参数<input type="text" name="name2"/> <br/>

    第一个上传的文件<input type="file" name="file1"/> <br/>

    第二个上传的文件<input type="file" name="file2"/> <br/>

    <input type="submit" value="提交">

</form>

 

注意了,由于要上传附件,所以一定要设置enctype为multipart/form-data,才可以实现附件的上传。

 

第三步:填写完信息后按“提交”按钮后,在D盘下查找file.log文件用记事本打开,数据如下:

-----------------------------7d92221b604bc

Content-Disposition: form-data; name="name1"

 

hello

-----------------------------7d92221b604bc

Content-Disposition: form-data; name="name2"

 

world

-----------------------------7d92221b604bc

Content-Disposition: form-data; name="file1"; filename="C:/2.GIF"

Content-Type: image/gif

 

GIF89a



http://www.niftyadmin.cn/n/3650433.html

相关文章

如何将Redis数据迁移到DigitalOcean托管数据库

介绍 (Introduction) There are a number of methods you can use to migrate data from one Redis instance to another, such as replication or snapshotting. However, migrations can get more complicated when you’re moving data to a Redis instance managed by a cl…

两种不同的Web应用

对于今天火炬说Donews Blog将换用WordPress的事后&#xff0c;令狐提出了一个技术方面的问题&#xff0c;我们就此讨论了一番&#xff1a;令狐:我倒是不关心WP好不好&#xff0c;而是觉得一些人&#xff08;也许包括我&#xff09;对于“Web应用”这一概念是不是应该反思一下了…

jest测试react组件_如何使用Jest为React组件编写快照测试

jest测试react组件In this tutorial, we will be looking at what snapshot tests are and how we can use snapshot testing to ensure our user interface does not change without the team knowing about it. 在本教程中&#xff0c;我们将研究什么是快照测试以及如何使用快…

搭建支持 OAuth Echo 的第三方 twitter 应用

背景&#xff1a;进入8月中&#xff0c;twitter 已经在每天减少 Basic Auth 的 API limit了&#xff0c;到月底 Basic Auth 将彻底关闭&#xff0c;也就是说到月底&#xff0c;所有的客户端&#xff0c;twitter与第三方服务之间都必须使用 OAuth 来传递帐号密码等信息。 我喜欢…

SVN+HTTP的一个ulgy的错误

原来配置得好好的基于HTTP的SVN忽然就出问题了&#xff0c;新增加的文件都加不上&#xff0c;一提交就出一个什么&#xff1a;302 Found的错误。在Google上找了半天才找到&#xff0c;竟然是这么个ugly的错误。The solution is to disable special 404 error handling for Subv…

Android 模拟HTTP 协议进行表单提交

在Android的客户端编程中&#xff08;特别是SNS 类型的客户端&#xff09;&#xff0c;经常需要实现注册功能Activity&#xff0c;要用户输入用户名&#xff0c;密码&#xff0c;邮箱&#xff0c;照片后注册。但这时就有一个问题&#xff0c;在HTML中用form表单就能实现如上的注…

react 分页_如何使用React构建自定义分页

react 分页介绍 (Introduction) Often times, we get involved in building web apps in which we are required to fetch large sets of data records from a remote server, API, or some database sitting somewhere. If you are building a payment system for example, it…

在VMWare中运行FreeBSD时的时钟同步问题

发现我那个运行在VMWare Workstation 4.5里的FreeBSD 6的时钟一直不对&#xff0c;总是会慢很多。曾经试图在cron里增加一个任务&#xff0c;每隔几分钟把时间调快一点&#xff0c;希望能对此作一些修正&#xff0c;但是好像没有效果。google了半天&#xff0c;找到的说法都是需…