Heim  >  Artikel  >  Backend-Entwicklung  >  android 上传图片到php服务器

android 上传图片到php服务器

WBOY
WBOYOriginal
2016-08-08 09:22:361198Durchsuche

android代码

public class EX08_11 extends Activity
{
  /* 变量声明
   * newName:上传后在服务器上的文件名称
   * uploadFile:要上传的文件路径
   * actionUrl:服务器对应的程序路径 */
//  private String newName="345444.jpg";
  private String uploadFile="/sdcard/345444.jpg";
  private String acti//*********/upload.php";
  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的method */
  private void uploadFile()
  {
//    String end = "\r\n";
//    String twoHyphens = "--";
    String boundary = "*****";
    try
    {
      URL url =new URL(actionUrl);
      HttpURLConnection con=(HttpURLConnection)url.openConnection();
      /* 允许Input、Output,不使用Cache */
//      con.setReadTimeout(5 * 1000); 
      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("enctype",
                         "multipart/form-data;boundary="+boundary);
      /* 设定DataOutputStream */
      DataOutputStream ds = 
        new DataOutputStream(con.getOutputStream());
      /*ds.writeBytes(twoHyphens + boundary + end);
        ds.writeBytes("Content-Disposition: form-data; " +
                    "name=\"file1\";filename=\"" +
                    newName +"\"" + end);


      ds.writeBytes(end);  */

      /* 取得文件的FileInputStream */
      FileInputStream fStream = new FileInputStream(uploadFile);
      /* 设定每次写入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());
      /* 关闭DataOutputStream */
      ds.close();
    }
    catch(Exception e)
    {
      showDialog(""+e);
    }
  }
  
  /* 显示Dialog的method */
  private void showDialog(String mess)
  {
    new AlertDialog.Builder(EX08_11.this).setTitle("Message")
     .setMessage(mess)
     .setNegativeButton("确定",new DialogInterface.OnClickListener()
     {
       public void onClick(DialogInterface dialog, int which)
       {          
       }
     })
     .show();
  }
}

php代码

$data = file_get_contents('php://input');
$time = date("YmdHis");
$rand = rand(0,100);
$filename = $_SERVER['DOCUMENT_ROOT'].'/image/'.$time.$rand.'.jpg';
while(file_exists($filename))
{
 $filename = $_SERVER['DOCUMENT_ROOT'].'/image/'.$time.rand(0,100).'.jpg'; 
}

echo $filename;
$handle = fopen($filename, 'w');
if ($handle)
{

  fwrite($handle,$data);
  fclose($handle);

  echo "success";
}
?>

以上就介绍了android 上传图片到php服务器,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:php oci8 小试Nächster Artikel:php js css加载合并函数 宋正河整理