Android将图片上传到php服务器的实例代码

layout中很普通,就是两个button和一个ImageView

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <Button android:id="@+id/test" android:layout_width="368dp" android:layout_height="wrap_content" android:text="button1" android:textAllCaps="false" /> <Button android:id="@+id/test2" android:layout_width="368dp" android:layout_height="wrap_content" android:text="button2" android:textAllCaps="false" /> <ImageView android:id="@+id/image" android:layout_width="0dp" android:layout_height="495dp" /> </LinearLayout>

在主页面中给按钮添加事件:

package success.xiaoyu.okhttp3; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Environment; import android.os.Handler; import android.os.Message; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.ImageView; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.util.concurrent.TimeUnit; import okhttp3.Call; import okhttp3.Callback; import okhttp3.MediaType; import okhttp3.MultipartBody; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.RequestBody; import okhttp3.Response; public class MainActivity extends AppCompatActivity { private Button button1,button2; private ImageView imageView; private Handler handler = new Handler(){ public void handleMessage(Message msg) { Bitmap bitmap = (Bitmap)msg.obj; imageView.setImageBitmap(bitmap); //Toast.makeText(MainActivity.this, Environment.getExternalStorageDirectory()+"",Toast.LENGTH_LONG).show(); } }; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.layout); button1 = (Button)findViewById(R.id.test); button2 = (Button)findViewById(R.id.test2); imageView = (ImageView)findViewById(R.id.image); button1.setOnClickListener(new View.OnClickListener() {//将服务器的图片读取到本地 public void onClick(View view) { OkHttpClient okHttpClient = new OkHttpClient(); Request request = new Request.Builder() .url("http://115.159.217.226/xy.png") .build(); okHttpClient.newCall(request).enqueue(new Callback() { public void onFailure(Call call, IOException e) { } public void onResponse(Call call, Response response) throws IOException { InputStream inputStream = response.body().byteStream(); Bitmap bitmap = BitmapFactory.decodeStream(inputStream); Message msg = new Message(); msg.obj = bitmap; handler.sendMessage(msg); } }); } }); button2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { uploadMultiFile(); } }); } private void uploadMultiFile() {//将图片发送到服务器 final String url = "http://115.159.217.226/upload.php"; File file = new File( Environment.getExternalStorageDirectory()+"/storage/emulated/0/", "xy.jpg"); RequestBody fileBody = RequestBody.create(MediaType.parse("application/octet-stream"), file); File file2 = new File( Environment.getExternalStorageDirectory()+"/storage/emulated/0/", "yyw.jpg"); RequestBody fileBody2 = RequestBody.create(MediaType.parse("application/octet-stream"), file2); RequestBody requestBody = new MultipartBody.Builder() .setType(MultipartBody.FORM) .addFormDataPart("image1", "xy.jpg", fileBody) .addFormDataPart("image2", "yyw.jpg", fileBody2) .build(); Request request = new Request.Builder() .url(url) .post(requestBody) .build(); final okhttp3.OkHttpClient.Builder httpBuilder = new OkHttpClient.Builder(); OkHttpClient okHttpClient = httpBuilder //设置超时 .connectTimeout(10, TimeUnit.SECONDS) .writeTimeout(15, TimeUnit.SECONDS) .build(); okHttpClient.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { Log.e("aa", "uploadMultiFile() e=" + e); } @Override public void onResponse(Call call, Response response) throws IOException { Log.i("bb", "uploadMultiFile() response=" + response.body().string()); } }); } }

服务器端代码:

<?php header('Content-type: application/json;charset=utf-8'); if(empty($_FILES)) die('{"status":0,"msg":"错误提交"}'); $dirPath = './img/';//设置文件保存的目录 if(!is_dir($dirPath)){ //目录不存在则创建目录 @mkdir($dirPath); } $count = count($_FILES);//所有文件数 if($count<1) die('{"status":0,"msg":"错误提交"}');//没有提交的文件 $success = $failure = 0; foreach($_FILES as $key => $value){ //循环遍历数据 $tmp = $value['name'];//获取上传文件名 $tmpName = $value['tmp_name'];//临时文件路径 //上传的文件会被保存到php临时目录,调用函数将文件复制到指定目录 if(move_uploaded_file($tmpName,$dirPath.date('YmdHis').'_'.$tmp)){ $success++; }else{ $failure++; } } $arr['status'] = 1; $arr['msg'] = '提交成功'; $arr['success'] = $success; $arr['failure'] = $failure; echo json_encode($arr); ?>

总结

以上所述是小编给大家介绍的Android将图片上传到php服务器的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

时间: 2024-09-18 14:29:37

Android将图片上传到php服务器的实例代码的相关文章

Android 通过httppost上传文本文件到服务器的实例代码_Android

废话不多说了,直接给大家贴关键代码了. /** * 往服务器上上传文本 比如log日志 * @param urlstr 请求的url * @param uploadFile log日志的路径 * /mnt/shell/emulated/0/LOG/LOG.log * @param newName log日志的名字 LOG.log * @return */ public static void httpPost(Activity activity,String urlstr,String uplo

Android 通过httppost上传文本文件到服务器的实例代码

废话不多说了,直接给大家贴关键代码了. /** * 往服务器上上传文本 比如log日志 * @param urlstr 请求的url * @param uploadFile log日志的路径 * /mnt/shell/emulated/0/LOG/LOG.log * @param newName log日志的名字 LOG.log * @return */ public static void httpPost(Activity activity,String urlstr,String uplo

c#多图片上传并生成缩略图的实例代码_实用技巧

前台代码: 复制代码 代码如下:  <%@ Page Language="C#" AutoEventWireup="true" CodeFile="upload.aspx.cs" Inherits="upload" %>  <!DOCTYPE html>  <html xmlns="http://www.w3.org/1999/xhtml"> <head runat

服务器-Android多图片上传会发生覆盖问题

问题描述 Android多图片上传会发生覆盖问题 我写了一个多图片上传的小程序,选出的图片存在List集合里,然后通过for循环发送到服务器里.可是却发生了收到都是最后一张图片,这该怎么解决!求大神相助!!!!!!!!!!!!!!!!!!!! 解决方案 应该是服务器那边的问题,服务器在每个上传的图片都应该保存到不同的文件名上 解决方案二: 服务器那边没处理好... 解决方案三: 访问网络是一个耗时的操作,程序会优先处理UI主线程,执行完for语句之后再跳转到子线程去请求服务器,于是乎...每次都

post请求-Android post方式上传数据给服务器

问题描述 Android post方式上传数据给服务器 做了一个小例子.Tomcat服务器发布Server.然后在Android手机上用httpurlconnection连接服务器.用post方式上传数据.有个问题很怪.在公司测试的时候没有任何问题.但是到家里运行,链接返回的状态码一直是404.在公司和家里的区别就是公司是局域网IP,在家里我是用的无线路由器自动分配的IP.地址192.168.1.100.我用手机浏览器都能访问到tomcat网站.但是就是post不了数据.各位大侠谁了解,指点一下

请问怎么将图片上传到ftp服务器

问题描述 请问怎么将图片上传到ftp服务器 使用的是commons-net-3.0.1.jar,System.out.println("上传结果:" + ftp.storeFile(filename, input));始终为false,这是什么情况 解决方案 检查下代码是不是哪里有问题呢,尤其是文件夹的创建过程,路径是否正确. 这里有个实例参考:http://blog.csdn.net/duanduanlong/article/details/7569324

如何从本地sdcard将图片上传到ftp服务器?

问题描述 如何从本地sdcard将图片上传到ftp服务器? commons-net-3.0.1.jar StoreFile()方法的参数应该怎么写,有demo最好了,感谢大家 解决方案 (1)设置ISS服务 解决方案二: (1)设置ISS服务

Java实现FTP文件的上传和下载功能的实例代码_java

FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为"文传协议".用于Internet上的控制文件的双向传输.同时,它也是一个应用程序(Application).基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件.在FTP的使用当中,用户经常遇到两个概念:"下载"(Download)和"上传"(Upload)."下载"文件就是从远程主机拷贝文件至自己

BootStrap Progressbar 实现大文件上传的进度条的实例代码_javascript技巧

1.首先实现大文件上传,如果是几兆或者几十兆的文件就用基本的上传方式就可以了,但是如果是大文件上传的话最好是用分片上传的方式.我这里主要是使用在客户端进行分片读取到服务器段,然后保存,到了服务器段读取完了之后将分片数据进行组合. 2.前端代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="UploadTest2.aspx.cs" Inherits="Htm