• android 文件上传类(可以直接被调用的)


    public class post {
    // 如果是文本的文件的话那么通过map类传递进来如果是文件的话通过FormFile传递进来
    public static String post(String actionUrl, Map params,
    FormFile[] files) throws IOException {
    String BOUNDARY = “743520vjdk4e”;
    String MULTIPART_FROM_DATA = “multipart/form-data”;
    URL uri = new URL(actionUrl);
    HttpURLConnection conn = (HttpURLConnection) uri.openConnection();
    conn.setReadTimeout(5 * 1000); // 缓存的最长时间
    conn.setDoInput(true);// 允许输入
    conn.setDoOutput(true);// 允许输出
    conn.setUseCaches(false); // 不允许使用缓存
    // 下面的几个值是必须需要设置进去的
    conn.setRequestMethod(”POST”);
    conn.setRequestProperty(”connection”, “keep-alive”);
    conn.setRequestProperty(”Charsert”, “UTF-8″);
    conn.setRequestProperty(”Content-Type”, MULTIPART_FROM_DATA
    + “:boundary” + BOUNDARY);
    // 首先组拼文本类型的参数
    StringBuilder sb = new StringBuilder();
    // 这个地方使用了Map循环 map循环的方式需要注意一下了
    for (Map.Entry entry : params.entrySet()) {
    sb.append(”–”);
    sb.append(BOUNDARY);
    // 回车换行
    sb.append(”\r\n”);
    sb.append(”Content-Disposition:form-data:name\”" + entry.getKey()
    + “\r\n\r\n”);
    sb.append(entry.getValue());
    sb.append(”\r\n”);
    }
    DataOutputStream outStream = new DataOutputStream(conn
    .getOutputStream());
    outStream.write(sb.toString().getBytes());
    // 前面必须是数组才可以
    // 发送文件数据
    for (FormFile file : files) {
    StringBuilder sb1 = new StringBuilder();
    sb1.append(”—”);
    sb1.append(BOUNDARY);
    sb1.append(”\r\n”);
    // 这个地方没有完
    sb1.append(”Content-Disposition:form-data:name=\”"
    + file.getFormname());
    sb1.append(”Content-Type” + file.getContentType() + “\r\n\r\n”);
    outStream.write(sb1.toString().getBytes());
    // 先判断formfile里面是否为空 如果不为空的话则写出 获取formfile的data里面的
    if (file.getInStream() != null) {
    // 提供流的的方式的话就是一边读一边写了
    byte[] buffer = new byte[1024];
    int len = 0;
    while ((len = file.getInStream().read(buffer)) != -1) {
    outStream.write(buffer, 0, len);
    }
    file.getInStream().close();
    } else {
    outStream.write(file.getData(), 0, file.getData().length);
    }
    outStream.write(”\r\n”.getBytes());
    }
    byte[] end_data = (”–” + BOUNDARY + “\r\n”).getBytes();
    outStream.write(end_data);
    outStream.flush();
    // 得到响应号码
    int res = conn.getResponseCode();
    if (res != 200)
    throw new RuntimeException(”请求失败 “);
    InputStream in = conn.getInputStream();
    int ch;
    StringBuilder sb2 = new StringBuilder();
    while ((ch = in.read()) != -1) {
    sb.append((char) ch);
    }
    outStream.close();
    conn.disconnect();
    return in.toString();
    }
    这是相关联的formFIle类的定义
    public class FormFile {
    // 定义了使用的文件的特点
    // 上传文件的数据
    private byte[] data;
    private InputStream inStream;
    // 文件名称
    private String fileName;
    // 请求参数名称
    private String Formnames;
    // 内容类型
    private String contentType = “application/octet-stream”;
    public FormFile(byte[] data, String fileName, String formnames,
    String contentType) {
    this.data = data;
    this.fileName = fileName;
    Formnames = formnames;
    this.contentType = contentType;
    }
    public FormFile(InputStream inStream, String fileName, String formnames,
    String contentType) {
    this.inStream = inStream;
    this.fileName = fileName;
    Formnames = formnames;
    this.contentType = contentType;
    }
    public byte[] getData() {
    return data;
    }
    public void setData(byte[] data) {
    this.data = data;
    }
    public InputStream getInStream() {
    return inStream;
    }
    public void setInStream(InputStream inStream) {
    this.inStream = inStream;
    }
    public String getFileName() {
    return fileName;
    }
    public void setFileName(String fileName) {
    this.fileName = fileName;
    }
    public String getFormnames() {
    return Formnames;
    }
    public void setFormnames(String formnames) {
    Formnames = formnames;
    }
    public String getContentType() {
    return contentType;
    }
    public void setContentType(String contentType) {
    this.contentType = contentType;
    }

    原文:http://blog.chinaunix.net/uid-20787846-id-1842620.html

  • 相关阅读:
    SharePoint服务器场环境安装升级补丁的详细步骤
    备注:常用Js脚本
    XMLHttpRequest对象使用示例
    TroubleShoot: SharePoint管理中心503错误,由于配置问题,无法加载模块 DLLowssvr.dll
    递归获取SharePoint文档库文件夹内的所有文件
    Datatable分页通用方法
    递归绑定树形菜单
    sharepoint发布站点匿名登陆访问不了文档库和表单库的解决办法
    Microsoft Office SharePoint Server 2007的文件目录结构
    Sharepoint母版页的应用
  • 原文地址:https://www.cnblogs.com/shanzei/p/2434556.html
Copyright © 2020-2023  润新知