下面是android上传图片的全部代码

EX08_11.java

packageirdc.ex08_11;
/*import相关class*/
importjava.io.DataOutputStream;
importjava.io.FileInputStream;
importjava.io.InputStream;
importjava.net.HttpURLConnection;
importjava.net.URL;
importandroid.app.Activity;
importandroid.app.AlertDialog;
importandroid.content.DialogInterface;
importandroid.os.Bundle;
importandroid.view.View;
importandroid.widget.Button;
importandroid.widget.TextView;

publicclassEX08_11extendsActivity
{
/*变量声明
*newName:上传后在服务器上的文件名称
*uploadFile:要上传的文件路径
*actionUrl:吱服器勺对应的程序路径*/
privateStringnewName="image.jpg";
privateStringuploadFile="/mnt/sdcard/DCIM/Camera/Icon-Small.png";
privateStringactionUrl="http://nc.8ff.cn/android_upload_o.php";
privateTextViewmText1;
privateTextViewmText2;
privateButtonmButton;

@Override
publicvoidonCreate(BundlesavedInstanceState)
{
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(newView.OnClickListener()
{
publicvoidonClick(Viewv)
{
uploadFile();
}
});
}

/*上传文件吹Server的method*/
privatevoiduploadFile()
{
Stringend="\r\n";
StringtwoHyphens="--";
Stringboundary="*****";
try
{
URLurl=newURL(actionUrl);
HttpURLConnectioncon=(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*/
DataOutputStreamds=
newDataOutputStream(con.getOutputStream());
ds.writeBytes(twoHyphens+boundary+end);
ds.writeBytes("Content-Disposition:form-data;"+
"name=\"file1\";filename=\""+
newName+"\""+end);
ds.writeBytes(end);

/*取得文件的FileInputStream*/
FileInputStreamfStream=newFileInputStream(uploadFile);
/*设定每次写入1024bytes*/
intbufferSize=1024;
byte[]buffer=newbyte[bufferSize];

intlength=-1;
/*从文件读取数据到缓冲区*/
while((length=fStream.read(buffer))!=-1)
{
/*将数据写入DataOutputStream中*/
ds.write(buffer,0,length);
}
ds.writeBytes(end);
ds.writeBytes(twoHyphens+boundary+twoHyphens+end);

/*closestreams*/
fStream.close();
ds.flush();

/*取得Response内容*/
InputStreamis=con.getInputStream();
intch;
StringBufferb=newStringBuffer();
while((ch=is.read())!=-1)
{
b.append((char)ch);
}
/*将Response显示于Dialog*/
showDialog(b.toString().trim());
/*关闭DataOutputStream*/
ds.close();
}
catch(Exceptione)
{
showDialog(""+e);
}
}

/*显示Dialog的method*/
privatevoidshowDialog(Stringmess)
{
newAlertDialog.Builder(EX08_11.this).setTitle("Message")
.setMessage(mess)
.setNegativeButton("确定",newDialogInterface.OnClickListener()
{
publicvoidonClick(DialogInterfacedialog,intwhich)
{
}
})
.show();
}
}


main.xml
<?xmlversion="1.0"encoding="utf-8"?>
<AbsoluteLayout
android:id="@+id/layout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/white"
xmlns:android="http://schemas.android.com/apk/res/android"
>
<TextView
android:id="@+id/myText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/str_title"
android:textSize="20sp"
android:textColor="@drawable/black"
android:layout_x="10px"
android:layout_y="12px"
/>
<TextView
android:id="@+id/myText2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="16sp"
android:textColor="@drawable/black"
android:layout_x="10px"
android:layout_y="52px"
/>
<TextView
android:id="@+id/myText3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="16sp"
android:textColor="@drawable/black"
android:layout_x="10px"
android:layout_y="102px"
/>
<Button
android:id="@+id/myButton"
android:layout_width="92px"
android:layout_height="49px"
android:text="@string/str_button"
android:textSize="15sp"
android:layout_x="90px"
android:layout_y="170px"
/>
</AbsoluteLayout>


服务器中的php文件android_upload_o.php
<?php
error_reporting(0);
$uploaddir='./data/attachment/forum/201111/23/wwws.jpg';
if(move_uploaded_file($_FILES['file1']['tmp_name'],$uploaddir)){
echo"<script>alert('上传成功!');location.href='".$uploaddir."';</script>";
//echo$uploaddir;
}
else
{
echo"errors";
}

?>

需要添加访问INTERNET权限

运行以上代码在android4.0发生异常

解决方法

在onCreate添加

StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectDiskReads().detectDiskWrites().detectNetwork().penaltyLog().build());

更多相关文章

  1. AndroidManifest.xml文件详解(uses-sdk)
  2. 修改 android 手机 hosts 文件的方法
  3. android 使用post方式上传文件
  4. Android NDK学习(5)调用.so文件
  5. Android okHttp上传单张或多张照片
  6. Android使用GET_CONTENT Action获取打开相应文件类型的应用
  7. Android简单文件浏览器源代码
  8. android播放音频文件(MediaPlayer)和录音(MediaRecorder)--播放

随机推荐

  1. android app 安装过程
  2. Android的Graphic System
  3. eclispe中Android AVD出现"No system ima
  4. Android跨进程启动Service流程及常见问题
  5. adb 超快速截图bash脚本
  6. Android 注册广播有几种方式及优缺点
  7. Android(安卓)ListView记录上次滑动时位
  8. 在android中运行java main方法
  9. Android中获取系统通讯录联系人并解决And
  10. android studio 添加按钮点击事件的三种