使用ajax上传图片Android使用HttpURLConnection上传图片

Android使用HttpURLConnection上传图片,adroid开发中会经常用到上传头像的功能,adroiddk中内置了HttURLCoectio类可以用来实现图片上传功能。
android开发中会经常用到上传头像的功能,androidsdk中内置了HttpURLConnection类可以用来实现图片上传功能。工具/原料AndroidHttpURLConnectionAndroid手机方法/步骤1本文采用Kotlin来实现图片上传。源码如下:2packagecom.study.threetestimportandroid.graphics.Bitmapimportandroid.graphics.BitmapFactoryimportandroid.os.AsyncTaskimportandroid.os.Bundleimportandroid.support.v7.app.AppCompatActivityimportkotlinx.android.synthetic.main.activity_main.*importjava.io.ByteArrayOutputStreamimportjava.io.DataOutputStreamimportjava.net.HttpURLConnectionimportjava.net.URLimportjava.util.*classMainActivity:AppCompatActivity(){  privatevalserverHost=\"http://192.168.2.1:9000/upload\"  overridefunonCreate(savedInstanceState:Bundle?){    super.onCreate(savedInstanceState)    setContentView(R.layout.activity_main)    sample_text.text=stringFromJNI()    button.setOnClickListener({      upLoadPic()    })  }  /**  *Anativemethodthatisimplementedbythe\'native-lib\'nativelibrary,  *whichispackagedwiththisapplication.  */  externalfunstringFromJNI():String  companionobject{    //Usedtoloadthe\'native-lib\'libraryonapplicationstartup.    init{      System.loadLibrary(\"native-lib\")    }  }  privatefunupLoadPic(){    valbitmap=BitmapFactory.decodeResource(resources,R.mipmap.ic_launcher)    AsyncTask.THREAD_POOL_EXECUTOR.execute({      uploadBitmap(serverHost,convertToByte(bitmap),\"file\")    })  }  privatefunconvertToByte(bm:Bitmap):ByteArray{    valbyteArrayOutputStream=ByteArrayOutputStream()    bm.compress(Bitmap.CompressFormat.PNG,100,byteArrayOutputStream)    returnbyteArrayOutputStream.toByteArray()  }  privatefunuploadBitmap(urlHost:String,imageBytes:ByteArray,key:String):String{    vallineEnd=\"\\r\\n\"    valprefix=\"--\"    valboundary=UUID.randomUUID().toString()    try{      valurl=URL(urlHost)      valcon=url.openConnection()asHttpURLConnection      con.doInput=true      con.doOutput=true      con.useCaches=false      con.requestMethod=\"POST\"      con.setRequestProperty(\"Connection\",\"Keep-Alive\")      con.setRequestProperty(\"Charset\",\"utf-8\")      con.setRequestProperty(\"Content-Type\",\"multipart/form-data;boundary=\"+boundary)      valdsDataOutputStream=DataOutputStream(con.outputStream)      dsDataOutputStream.writeBytes(prefix+boundary+lineEnd)      dsDataOutputStream.writeBytes(\"Content-Disposition:form-data;\"+\"name=\\\"\"+key+\"\\\";filename=\\\"\"+          \"11.jpg\\\"\"+lineEnd)      dsDataOutputStream.writeBytes(lineEnd)      dsDataOutputStream.write(imageBytes,0,imageBytes.size)      dsDataOutputStream.writeBytes(lineEnd)      dsDataOutputStream.writeBytes(prefix+boundary+prefix+lineEnd)      dsDataOutputStream.close()      valcah=con.responseCode      returnif(cah==200){        valisInputStream=con.inputStream        varch=0        valbuffer=StringBuffer()        while(isInputStream.read().apply{ch=this}!=-1){          buffer.append(ch.toChar())        }        buffer.toString()      }else{        \"false\"      }    }catch(e:Exception){      e.printStackTrace()    }    return\"false\"  }}3源代码截图如下:步骤阅读步骤阅读步骤阅读步骤阅读4功能实现的是把androidicon上传到服务器privatevalserverHost=\"http://192.168.2.1:9000/upload\"地址为局域网IP地址,需要改成自己对应的地址。5服务器端也是采用Kotlin来实现的源代码如下:6@ControllerclassFileUploadController{  @RequestMapping(\"/upload\")  @ResponseBody  funhandleFileUpload(@RequestParam(\"file\")file:MultipartFile):String{    if(!file.isEmpty){      try{        valout=BufferedOutputStream(FileOutputStream(File(file.originalFilename)))        out.write(file.bytes)        out.flush()        out.close()      }catch(e:IOException){        e.printStackTrace()        return\"uploadfailed\"+e.message      }      return\"uploadsuccess\"    }else{      return\"uploadfailed,becausefileisempty\"    }  }}7服务器源代码截图如下:Android使用HttpURLConnection上传图片的功能就介绍完了。步骤阅读END注意事项服务器端采用是SpringMVC

本文来自投稿,不代表长河网立场,转载请注明出处: http://www.changhe99.com/a/MOreYaJr2o.html

(0)

相关推荐