andorid 一个文件夹怎么上传到服务器,文件夹里面是有文件的

解决方案 »

  1.   

    都没有人答啊,我的问题也可以这样问:
    在android客户端可不可以写程序,去服务端建一个文件夹
      

  2.   

    先mkdir呗,然后把文件以流的方式post到服务器上去
      

  3.   


    /**
    * 通过拼接的方式构造请求内容,实现参数传输以及文件传输
    * @param actionUrl
    * @param params
    * @param files
    * @return
    * @throws IOException
    */
    public static String post(String actionUrl, Map<String, String> params, 
        Map<String, File> files) throws IOException {   String BOUNDARY = java.util.UUID.randomUUID().toString();
      String PREFIX = "--" , LINEND = "\r\n";
      String MULTIPART_FROM_DATA = "multipart/form-data"; 
      String CHARSET = "UTF-8";  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(); 
      for (Map.Entry<String, String> entry : params.entrySet()) { 
        sb.append(PREFIX); 
        sb.append(BOUNDARY); 
        sb.append(LINEND); 
        sb.append("Content-Disposition: form-data; name=\"" + entry.getKey() + "\"" + LINEND);
        sb.append("Content-Type: text/plain; charset=" + CHARSET+LINEND);
        sb.append("Content-Transfer-Encoding: 8bit" + LINEND);
        sb.append(LINEND);
        sb.append(entry.getValue()); 
        sb.append(LINEND); 
      }   DataOutputStream outStream = new DataOutputStream(conn.getOutputStream()); 
      outStream.write(sb.toString().getBytes()); 
      // 发送文件数据 
      if(files!=null){
        int i = 0;
        for (Map.Entry<String, File> file: files.entrySet()) { 
          StringBuilder sb1 = new StringBuilder(); 
          sb1.append(PREFIX); 
          sb1.append(BOUNDARY); 
          sb1.append(LINEND); 
          sb1.append("Content-Disposition: form-data; name=\"file"+(i++)+"\"; filename=\""+file.getKey()+"\""+LINEND);
          sb1.append("Content-Type: application/octet-stream; charset="+CHARSET+LINEND);
          sb1.append(LINEND);
          outStream.write(sb1.toString().getBytes());       InputStream is = new FileInputStream(file.getValue());
          byte[] buffer = new byte[1024]; 
          int len = 0; 
          while ((len = is.read(buffer)) != -1) { 
            outStream.write(buffer, 0, len); 
          }      is.close(); 
          outStream.write(LINEND.getBytes()); 
        } 
      }
      
      //请求结束标志
      byte[] end_data = (PREFIX + BOUNDARY + PREFIX + LINEND).getBytes(); 
      outStream.write(end_data); 
      outStream.flush();   //得到响应码 
      int res = conn.getResponseCode(); 
      InputStream in = null;
      if (res == 200) {
        in = conn.getInputStream(); 
        int ch; 
        StringBuilder sb2 = new StringBuilder(); 
        while ((ch = in.read()) != -1) { 
          sb2.append((char) ch); 
        } 
      }
      return in == null ? null : in.toString(); 
    }
      

  4.   

    服务端要架设FTP或webservice+数据库