`
yzyspy
  • 浏览: 82187 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

android 文件上传(模拟表单提交)

 
阅读更多

 

package irdc.ex08_11;

import java.io.BufferedReader;

/* import相关class */

public class EX08_11 extends Activity
{
  /*
   * 变量声明 filename:上传后在服务器上的文件名称 uploadFile:要上传的文件路径 actionUrl:服务器上对应的程序路径
   */

  private String uploadFile = "/sdcard/mp3/FmChannels.txt";
  private String srcPath = "/sdcard/mp3/FmChannels.txt";
  private String actionUrl = "http://116.207.170.64:8080/FileUpload/updateUserServlet";
  private TextView mText1;
  private TextView mText2;
  private Button mButton;

  @Override
  public void onCreate(Bundle savedInstanceState)
  {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    mText1 = (TextView) findViewById(R.id.myText2);
    mText1.setText("文件路径:\n" + uploadFile);
    mText2 = (TextView) findViewById(R.id.myText3);
    mText2.setText("上传网址:\n" + actionUrl);
    /* 设置mButton的onClick事件处理 */
    mButton = (Button) findViewById(R.id.myButton);
    mButton.setOnClickListener(new View.OnClickListener()
    {
      public void onClick(View v)
      {
        uploadFile();
      }
    });
  }

  /* 上传文件至Server的方法 */
  private void uploadFile()
  {

    String uploadUrl = actionUrl;
    String end = "\r\n";
    String twoHyphens = "--";
    String boundary = "******";
    try
    {
      URL url = new URL(uploadUrl);
      HttpURLConnection httpURLConnection = (HttpURLConnection) url
          .openConnection();
      httpURLConnection.setDoInput(true);
      httpURLConnection.setDoOutput(true);
      httpURLConnection.setUseCaches(false);
      httpURLConnection.setRequestMethod("POST");
      httpURLConnection.setRequestProperty("Connection", "Keep-Alive");
      httpURLConnection.setRequestProperty("Charset", "UTF-8");
      httpURLConnection.setRequestProperty("Content-Type",
          "multipart/form-data;boundary=" + boundary);

      DataOutputStream dos = new DataOutputStream(httpURLConnection.getOutputStream());
      dos.writeBytes(twoHyphens + boundary + end);
      dos.writeBytes("Content-Disposition: form-data; name=\"file\"; filename=\""
              + srcPath.substring(srcPath.lastIndexOf("/") + 1)
              + "\"" + end);
      dos.writeBytes(end);
      //将SD 文件通过输入流读到Java代码中-++++++++++++++++++++++++++++++`````````````````````````
      FileInputStream fis = new FileInputStream(srcPath);
      byte[] buffer = new byte[8192]; // 8k
      int count = 0;
      while ((count = fis.read(buffer)) != -1)
      {
        dos.write(buffer, 0, count);

      }
      fis.close();
      System.out.println("file send to server............");
      dos.writeBytes(end);
      dos.writeBytes(twoHyphens + boundary + twoHyphens + end);
      dos.flush();
    
     //读取服务器返回结果
      InputStream is = httpURLConnection.getInputStream();
      InputStreamReader isr = new InputStreamReader(is, "utf-8");
      BufferedReader br = new BufferedReader(isr);
      String result = br.readLine();
     
      Toast.makeText(this, result, Toast.LENGTH_LONG).show();
      dos.close();
      is.close();

    } catch (Exception e)
    {
      e.printStackTrace();
      setTitle(e.getMessage());
    }

  }

}
分享到:
评论
1 楼 grandkingwang 2014-10-11  

相关推荐

    Android模拟表单提交 多图选择+多图上传Demo

    Android模拟表单提交 多图选择+多图上传Demo 对应博文:Android原生模拟表单提交上传多图+PHP接收表单数据和多图存储:http://blog.csdn.net/iwanghang/article/details/65630703

    Android实现表单上传文件

    但在Android中,由于没有直接的API支持,我们需要手动构造HTTP请求,模拟这种表单提交。 1. **构建HTTP请求头** - `Content-Type`: 需要设置为`multipart/form-data`,表示这是个包含文件的数据。 - `Boundary`: ...

    webView表单提交

    本文将详细讲解如何在`webView`中实现表单提交和文件上传,并探讨兼容Android 5.0(API级别21)及以上的策略。 首先,让我们了解`webView`的基本用法。`WebView`是Android SDK中的一个类,它可以加载HTML、CSS和...

    Android模拟 HTTP multipart/form-data 请求协议信息实现图片上传

    Android模拟 HTTP multipart/form-data 请求协议信息实现图片上传

    android客户端向服务端上传数据 post和get两种方式

    POST请求则允许在请求体中携带大量数据,如表单数据、XML或者文件,因此更适合上传或提交复杂数据。 1. GET请求: 在Android中,可以使用`HttpURLConnection`或`OkHttp`库来实现GET请求。通过设置URL并添加查询参数...

    从服务器获取数据,上传数据

    4. **上传数据**:当需要向服务器上传数据时,通常包括文件上传和表单数据提交。文件上传涉及Multipart请求,可以使用RequestBody、OkHttp的RequestBody.create方法来创建。表单数据可以通过POST请求的RequestBody...

    Android应用源码之31.模拟Http请求(.zip

    2. POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。 三、Android中的HTTP请求库 1. HttpURLConnection:Android SDK内置的类,可以直接使用Java标准库进行HTTP请求。...

    java模拟发送form-data的请求方式

    Java 模拟发送 Form-Data 的请求方式 Java 模拟发送 Form-Data 的请求方式是指在 Java 语言中模拟浏览器发送 Form-Data 格式的 HTTP 请求的方法。Form-Data 是一种常见...该方法广泛应用于文件上传、表单提交等场景。

    HttpClient通过Post上传文件的实例代码

    在HTTP中,POST请求通常用于向服务器提交数据,包括表单数据、文件等。HttpClient的MultipartEntity类允许我们构建这种多部分请求,它可以将不同类型的实体(如文件和字符串)组合在一起。 以下是一个使用...

    大学生毕业信息提交系统

    3. **文件上传**: - 毕业论文:系统支持上传PDF或Word格式的毕业论文,可能需要进行文件大小和类型的限制。 - 相关证明材料:包括成绩单、实习报告、获奖证书等,需要支持多种文件类型,并进行安全存储。 4. **...

    Android平台下轻量级http网络传输库

    3. Form表单提交:模拟HTML表单提交方式发送数据。 4. 二进制数据传输:支持图片、音频等非文本数据的传输。 5. JSON内容传输:自动将JSON字符串转换为Java对象,反之亦然,简化了数据处理。 6. 文件上传/下载:包括...

    使用POST方式登录QQ.rar

    POST方法主要用于向服务器发送数据,常用于表单提交或者API接口的数据传递。在登录场景下,用户输入的用户名和密码会被封装成请求体,通过POST请求发送到服务器进行验证。在登录QQ的过程中,这个过程涉及到了以下几...

    手机网站app

    POST则用于向服务器提交数据,通常用于表单提交或上传文件,参数包含在请求体中。在App中进行POST和GET交互,开发者需要理解HTTP请求的构建,包括设置请求头、添加请求体和处理响应数据。 4. **实例程序**:压缩包...

    python测试框架-python+requests+uiautomator2

    它提供了处理cookies、文件上传、数据编码、自动处理重定向等功能。例如,你可以使用`requests.get(url)`来发送一个GET请求,或者使用`requests.post(url, data=data)`来提交表单数据。对于开发者来说,`requests`库...

    个人信息-VUE模板 UNIAPP模板 布局、样式、JS分离

    同时,由于Vue.js和UniApp都支持插件和第三方库,可以方便地添加如验证、表单提交、动态加载等功能,提升用户体验。 总的来说,这个模板提供了一个基础的个人信息展示框架,涵盖了Vue.js的组件化开发思想和UniApp的...

    源代码20230413.zip

    “【案例3-4】调查问卷”可能是一个简单的问卷调查系统,使用了表单提交和数据处理。这可能涉及到后端语言(如Python的Flask或Django框架)来接收和存储用户提交的问卷数据,以及前端技术(如HTML表单和AJAX异步请求...

    mui 案例 求职APP

    6. **简历投递**:在求职APP中,用户可能需要提交简历,开发者需要设计一个简历上传或填写的界面,并处理文件上传或表单数据提交到服务器的过程。 7. **API接口**:与后端服务器的交互是必不可少的,开发者需要熟悉...

    仿小红书发布界面

    9. **错误处理**:为提供良好的用户体验,必须处理可能出现的错误情况,如网络中断、文件上传失败等。错误提示应清晰易懂,引导用户解决问题。 10. **测试与调试**:在开发过程中,单元测试、集成测试和端到端测试...

    服务器端测试GET、POST

    POST方法则更为复杂,常用于提交表单数据或上传文件。POST请求的数据被封装在请求体中,不会显示在URL上,因此可以传输大量数据,且更安全。不过,POST请求不支持缓存,且对于某些浏览器,用户可能无法直接书签或回...

    coolaf1.2.2接口在线压力测试版-windows64位.zip

    放到自己服务器,自己用的 《接口在线压力测试工具coolaf1.2.1在Windows64位系统中的应用详解》 接口测试是软件开发过程中的重要...1. POST请求:POST请求常用于提交数据,如表单数据或上传文件。在压力测试中,coolaf

Global site tag (gtag.js) - Google Analytics