Android上传图片和文件到服务器

在项目开发中,需要上传图片和文件到服务器端,所以需要安卓模拟文件表单提交。

安卓端代码:

 private String uploadFile()
    {
    	DebugLogger.d(TAG, "start upload img!");
      String end ="\r\n";
      String twoHyphens ="--";
      String boundary ="*****";
      try
      {
        URL url =new URL(server_img);
        HttpURLConnection con=(HttpURLConnection)url.openConnection();
        /* 允许Input、Output,不使用Cache */
        con.setDoInput(true);
        con.setDoOutput(true);
        con.setUseCaches(false);
        /* 设置传送的method=POST */
        con.setRequestMethod("POST");
        /* setRequestProperty */
        con.setRequestProperty("Connection", "Keep-Alive");
        con.setRequestProperty("Charset", "UTF-8");
        con.setRequestProperty("Content-Type",
                           "multipart/form-data;boundary="+boundary);
        /* 设置DataOutputStream */
        DataOutputStream ds =
          new DataOutputStream(con.getOutputStream());
        ds.writeBytes(twoHyphens + boundary + end);
        ds.writeBytes("Content-Disposition: form-data; "+
                      "name=\"uploaded\";filename=\""+
                      device_id+"\""+ end);
        ds.writeBytes(end);  
        /* 取得文件的FileInputStream */
        String imgUrl=Environment.getExternalStorageDirectory()+"/CameraOn/10.jpg";;
        FileInputStream fStream =new FileInputStream(imgUrl);
        /* 设置每次写入1024bytes */
        int bufferSize =1024;
        byte[] buffer =new byte[bufferSize];
        int length =-1;
        /* 从文件读取数据至缓冲区 */
        while((length = fStream.read(buffer)) !=-1)
        {
          /* 将资料写入DataOutputStream中 */
          ds.write(buffer, 0, length);
        }
        ds.writeBytes(end);
        ds.writeBytes(twoHyphens + boundary + twoHyphens + end);
        /* close streams */
        fStream.close();
        ds.flush();
        /* 取得Response内容 */
        InputStream is = con.getInputStream();
        int ch;
        StringBuffer b =new StringBuffer();
        while( ( ch = is.read() ) !=-1 )
        {
          b.append( (char)ch );
        }
        /* 将Response显示于Dialog */
        //showDialog("上传成功"+b.toString().trim());
        DebugLogger.d("upload img", "upload img success!");
        DebugLogger.d("upload img", b.toString());
        //displayToast("UPLOAD img success!");
        /* 关闭DataOutputStream */
        ds.close();
        return b.toString();
      }
      catch(Exception e)
      {
    	  DebugLogger.d("upload img", "upload img failed!");
    	  //displayToast("upload failed");
        //showDialog("上传失败"+e);
    	  return "failed!";
      }
    }


服务器端php代码:  

<?PHP
   /* $target = "upload/";
	$target = $target.basename($_FILES['uploaded']['name']);
	$ok = 1;
	if(move_uploaded_file($_FILES['uploaded']['temp_name'], $target))
	{
		echo "The file ". basename( $_FILES['uploadedfile']['name']). " has been uploaded";
	}
	else
	{
		echo "Sorry, there was a problem uploading your file.";
	}*/

	//require_once 'inc_thumb.php';
	$pp = "upload/";
	$FileID=date("Ymd-His") . '-' . rand(100,999);
	/*$typeName = basename($_FILES['uploaded']['name']);
	$indexFrom = strpos($typeName, ".");
	$jpgLength =  strlen($typeName);*/
	$target = $pp.$FileID;//.substr($typeName, $indexFrom, $jpgLength-$indexFrom);//basename($_FILES['uploaded']['name']);
	$thumb = $pp.$FileID."th".basename($_FILES['uploaded']['name']);
	$ok=1;
	//echo "------".substr($typeName, $indexFrom, $jpgLength-$indexFrom)."---".$target."--";

	if(move_uploaded_file($_FILES['uploaded']['tmp_name'],$target))
	{
		//makethumb($target,$thumb,"75","75");
		echo "The file ".basename($_FILES['uploaded']['name'])." has been uploaded successful.";
	}
		
	else
	{
		echo "Sorry, there was a problem uploading your file.failed";
	}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Android应用程序中上传文件服务器,可以按照以下步骤进行操作: 1. 首先,确保你有一个可以接受文件上传服务器。你可以使用常见的后端技术(如Node.js、PHP等)来构建一个简单的服务器端。 2. 在Android应用中,需要获取要上传的文件的路径。你可以使用`Intent`来让用户选择文件,并获取文件的URI。 3. 使用网络请求库(如OkHttp、Retrofit等)发送HTTP POST请求到服务器。在请求中,将文件作为请求体的一部分进行上传。下面是一个使用OkHttp库的示例代码: ```java OkHttpClient client = new OkHttpClient(); File file = new File(filePath); // 文件路径 RequestBody requestBody = new MultipartBody.Builder() .setType(MultipartBody.FORM) .addFormDataPart("file", file.getName(), RequestBody.create(MediaType.parse("application/octet-stream"), file)) .build(); Request request = new Request.Builder() .url("http://your-server-url.com/upload") .post(requestBody) .build(); try { Response response = client.newCall(request).execute(); if (response.isSuccessful()) { // 文件上传成功 } else { // 文件上传失败 } } catch (IOException e) { e.printStackTrace(); } ``` 在上述代码中,将文件添加到`MultipartBody`中,并将其作为请求的一部分。确保将`"file"`替换为服务器端期望的文件参数名称。 4. 在服务器端,处理文件上传请求并保存文件。具体的实现取决于你使用的后端技术。根据后端框架的文档和示例代码进行操作。 这是一个基本的文件上传流程。你可以根据自己的需求进行修改和扩展。希望对你有帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值