Android上传图片(Android Studio)
Fragment界面:
private String img_src;/** * 从相册选取图片 */public void selectImg() {    Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);    intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*");    startActivityForResult(intent, SELECT_PHOTO);}@Overridepublic void onActivityResult(int requestCode, int resultCode, Intent data) {    super.onActivityResult(requestCode, resultCode, data);    switch (requestCode) {              case SELECT_PHOTO:            switch (resultCode) {                case RESULT_OK:                    Uri uri = data.getData();                    img_src = uri.getPath();//这是本机的图片路径                                           ContentResolver cr = getActivity().getContentResolver();                    try {                        Bitmap bitmap = BitmapFactory.decodeStream(cr.openInputStream(uri));                        /* 将Bitmap设定到ImageView */                        imageView.setImageBitmap(bitmap);                        String[] proj = {MediaStore.Images.Media.DATA};                        CursorLoader loader = new CursorLoader(getContext(), uri, proj, null, null, null);                        Cursor cursor = loader.loadInBackground();                        if (cursor != null) {                            int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);                            cursor.moveToFirst();                                                  img_src = cursor.getString(column_index);//图片实际路径                        }                        cursor.close();                    } catch (FileNotFoundException e) {                        Log.e("Exception", e.getMessage(), e);                    }                    break;            }            break;    }}public void uploadImage(String path) {    new Thread(new Runnable() {        @Override        public void run() {            String uploadurl = SharedPreferencesUtil.getServerUrls(getActivity()) + "mobileqrcode/uploadsignimg.html";            try {                File file = new File(img_src);                result = UploadUtil.uploadImage(file, uploadurl);            } catch (Exception e) {                e.printStackTrace();            }        }    }).start();}
   
   
   
   
上传文件工具类:
public class UploadUtil {    private static final String TAG = "uploadFile";    private static final int TIME_OUT = 10 * 1000;//超时时间    private static final String CHARSET = "utf-8";//设置编码    /**     * android上传文件到服务器     *     * @param file       需要上传的文件     * @param RequestURL  请求的url     * @return 返回响应的内容     */    public static String uploadImage(File file, String RequestURL) {       String result = "error";       String BOUNDARY = UUID.randomUUID().toString();//边界标识 随机生成        String PREFIX = "--", LINE_END = "\r\n";       String CONTENT_TYPE = "multipart/form-data";//内容类型        try {           URL url = new URL(RequestURL);           HttpURLConnection conn = (HttpURLConnection) url.openConnection();           conn.setReadTimeout(TIME_OUT);           conn.setConnectTimeout(TIME_OUT);           conn.setDoInput(true);//允许输入流            conn.setDoOutput(true);//允许输出流            conn.setUseCaches(false);//不允许使用缓存            conn.setRequestMethod("POST");//请求方式            conn.setRequestProperty("Charset", CHARSET);//设置编码            conn.setRequestProperty("connection", "keep-alive");           conn.setRequestProperty("Content-Type", CONTENT_TYPE + ";boundary=" + BOUNDARY);           conn.connect();            if (file != null) {                //当文件不为空,把文件包装并且上传                DataOutputStream dos = new DataOutputStream(conn.getOutputStream());                /*StringBuilder sb = new StringBuilder();                sb.append(PREFIX);                sb.append(BOUNDARY);                sb.append(LINE_END);                *//*                 * 这里重点注意:                 * name里面的值为服务器端需要key,只有这个key才可以得到对应的文件                 * filename是文件的名字,包含后缀名的。比如:abc.png                  *//*                sb.append("Content-Disposition: form-data; name=\"inputName\"; filename=\"" + file.getName() + "\"" + LINE_END);                //sb.append("Content-Type: application/octet-stream; charset=" + CHARSET + LINE_END);                //sb.append("Content-Type: " + getMIMEType(file) + LINE_END);                sb.append(LINE_END);                dos.write(sb.toString().getBytes());*///此写法会导致无法上传                  dos.writeBytes(PREFIX + BOUNDARY + LINE_END);                dos.writeBytes("Content-Disposition: form-data; " + "name=\"inputName\";filename=\"" + file.getName() + "\"" + LINE_END);                dos.writeBytes(LINE_END);                FileInputStream is = new FileInputStream(file);                byte[] bytes = new byte[1024];                int len = -1;                while ((len = is.read(bytes)) != -1) {                    dos.write(bytes, 0, len);                }                is.close();                dos.write(LINE_END.getBytes());                byte[] end_data = (PREFIX + BOUNDARY + PREFIX + LINE_END).getBytes();                dos.write(end_data);                dos.flush();                /*                 * 获取响应码  200=成功                 * 当响应成功,获取响应的流                   */                int res = conn.getResponseCode();                if (res == 200) {                    InputStream input = conn.getInputStream();                    StringBuilder sbs = new StringBuilder();                    int ss;                    while ((ss = input.read()) != -1) {                        sbs.append((char) ss);                    }                    result = sbs.toString();                    Log.i(TAG, "result------------------>>" + result);                }            }        } catch (IOException e) {            e.printStackTrace();        }        return result;    }    private static String getMIMEType(File file) {        String fileName = file.getName();        if (fileName.endsWith("png") || fileName.endsWith("PNG")) {            return "image/png";        } else {            return "image/jpg";        }    }}
   
   
   
Java端接收图片(Eclipse)
   
   
@RequestMapping(value = "/uploadsignimg", method = RequestMethod.POST) public void uploadOrderSignImage(HttpServletRequest request, HttpSession session, HttpServletResponse response) {  try {   MultipartHttpServletRequest rq = (MultipartHttpServletRequest) request;   Map file_list = rq.getFileMap();     if (file_list != null && file_list.size() > 0) {    if (file_list.containsKey("inputName")) {     MultipartFile file = file_list.get("inputName");     if (file != null) {      // 保存订单签收图片      String fileName = file.getOriginalFilename();      String newFileName = "";      String[] desp = fileName.split("\\.");      if (desp != null && desp.length > 0) {       String extendName = desp[desp.length - 1];       newFileName = new Date().getTime() + "." + extendName;       ServletContext servletContext = request.getSession().getServletContext();       String uploadPath = servletContext.getRealPath("/") + "upload\\";       File saveFile = new File(uploadPath, newFileName);       file.transferTo(saveFile);      }      session.setAttribute("newfilename", newFileName);     }    }   }  } catch (Exception e) {   e.printStackTrace();  } }

   
   
   
   


更多相关文章

  1. NPM 和webpack 的基础使用
  2. 【阿里云镜像】使用阿里巴巴DNS镜像源——DNS配置教程
  3. 读取android手机流量信息
  4. android 使用html5作布局文件: webview跟javascript交互
  5. Android(安卓)matrix 控制图片的旋转、缩放、移动
  6. Android(安卓)多媒体扫描过程(Android(安卓)Media Scanner Proces
  7. android“设置”里的版本号
  8. Android开发环境搭建
  9. Android(安卓)Resource介绍和使用

随机推荐

  1. Android(安卓)-BLE蓝牙小DEMO
  2. android之通过phoneStateListener监听电
  3. Android开发:ZXing条码扫描-竖屏解决方案
  4. Android 基础知识、Android 进阶知识、An
  5. 在android用Google Geocoding API服务解
  6. Ubuntu下安装Android(安卓)NDK
  7. Cocos2d-x3.1下 Android,APK自动升级
  8. Android应用程序的四个关键点
  9. Android—— 4.2 Vold挂载管理_mmcblk内
  10. android 关机 流程分析