首页 > 其他分享 >本实例实现了android上传手机图片…

本实例实现了android上传手机图片…

时间:2023-04-30 19:04:07浏览次数:50  
标签:String 实例 new android con 上传 ds name


本实例实现了android上传手机图片至服务器,服务器进行保存

服务器servlet代码

Java代码

本实例实现了android上传手机图片…_上传

 

1. doPost(HttpServletRequest request, HttpServletResponse response)     
2.           throws ServletException, IOException {     
3.               
4.           String temp=request.getSession().getServletContext().getRealPath("/")+"temp";   //临时目录   
5.           System.out.println("temp="+temp);   
6.           String loadpath=request.getSession().getServletContext().getRealPath("/")+"Image"; //上传文件存放目录   
7.           System.out.println("loadpath="+loadpath);   
8.           DiskFileUpload fu =new DiskFileUpload();   
9.           fu.setSizeMax(1*1024*1024);   // 设置允许用户上传文件大小,单位:字节   
10.           fu.setSizeThreshold(4096);   // 设置最多只允许在内存中存储的数据,单位:字节   
11.           fu.setRepositoryPath(temp); // 设置一旦文件大小超过getSizeThreshold()的值时数据存放在硬盘的目录   
12.             
13.           //开始读取上传信息   
14. int index=0;   
15.           List fileItems =null;   
16.                   
17.                           
18.                                try {   
19.                                        fileItems = fu.parseRequest(request);   
20.                                         System.out.println("fileItems="+fileItems);   
21.                                } catch (Exception e) {   
22.                                        e.printStackTrace();   
23.                                }   
24.                           
25.                   
26.           Iterator iter = fileItems.iterator(); // 依次处理每个上传的文件   
27. while (iter.hasNext())   
28.           {   
29.               FileItem item = (FileItem)iter.next();// 忽略其他不是文件域的所有表单信息   
30. if (!item.isFormField())   
31.               {   
32.                   String name = item.getName();//获取上传文件名,包括路径   
33.                   name=name.substring(name.lastIndexOf("\\")+1);//从全路径中提取文件名   
34. long size = item.getSize();   
35.                   if((name==null||name.equals("")) && size==0)   
36.                         continue;   
37.                   int point = name.indexOf(".");   
38.                   name=(new Date()).getTime()+name.substring(point,name.length())+index;   
39.                   index++;   
40.                   File fNew=new File(loadpath, name);   
41.                   try {   
42.                                        item.write(fNew);   
43.                                } catch (Exception e) {   
44.                                        // TODO Auto-generated catch block   
45.                                        e.printStackTrace();   
46.                                }   
47.                     
48.                     
49.               }   
50.               else//取出不是文件域的所有表单信息   
51.               {   
52.                   String fieldvalue = item.getString();   
53.            //如果包含中文应写为:(转为UTF-8编码)   
54.                   //String fieldvalue = new String(item.getString().getBytes(),"UTF-8");   
55.               }   
56.           }   
57.           String text1="11";   
58.           response.sendRedirect("result.jsp?text1="+ text1);   
59.    }



android客户端代码


Java代码

本实例实现了android上传手机图片…_上传



public class PhotoUpload extends Activity {
    private String newName ="image.jpg";
    private String uploadFile ="/sdcard/image.JPG";
    private String actionUrl ="http://192.168.0.71:8086/HelloWord/myForm";
    private TextView mText1;
    private TextView mText2;
    private Button mButton;
    @Override
      publicvoid onCreate(Bundle savedInstanceState)
      {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.photo_upload);
        mText1 = (TextView) findViewById(R.id.myText2);
        //"文件路径:\n"+
        mText1.setText(uploadFile);
        mText2 = (TextView) findViewById(R.id.myText3);
        //"上传网址:\n"+
        mText2.setText(actionUrl);
            
        mButton = (Button) findViewById(R.id.myButton);
        mButton.setOnClickListener(new View.OnClickListener()
        {
          publicvoid onClick(View v)
          {
            uploadFile();
          }
        });
      }
      
      privatevoid uploadFile()
      {
        String end ="\r\n";
        String twoHyphens ="--";
        String boundary ="*****";
        try
        {
          URL url =new URL(actionUrl);
          HttpURLConnection con=(HttpURLConnection)url.openConnection();
          
          con.setDoInput(true);
          con.setDoOutput(true);
          con.setUseCaches(false);
          
          con.setRequestMethod("POST");
          
          con.setRequestProperty("Connection", "Keep-Alive");
          con.setRequestProperty("Charset", "UTF-8");
          con.setRequestProperty("Content-Type",
                             "multipart/form-data;boundary="+boundary);
          
          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 fStream =new FileInputStream(uploadFile);
          
          int bufferSize =1024;
          byte[] buffer =newbyte[bufferSize];
          int length =-1;
          
          while((length = fStream.read(buffer)) !=-1)
          {
            
            ds.write(buffer, 0, length);
          }
          ds.writeBytes(end);
          ds.writeBytes(twoHyphens + boundary + twoHyphens + end);
          
          fStream.close();
          ds.flush();
          
          InputStream is = con.getInputStream();
          int ch;
          StringBuffer b =new StringBuffer();
          while( ( ch = is.read() ) !=-1 )
          {
            b.append( (char)ch );
          }
          
          showDialog("上传成功"+b.toString().trim());
          
          ds.close();
        }
        catch(Exception e)
        {
          showDialog("上传失败"+e);
        }
      }
      
      privatevoid showDialog(String mess)
      {
        new AlertDialog.Builder(PhotoUpload.this).setTitle("Message")
         .setMessage(mess)
         .setNegativeButton("确定",new DialogInterface.OnClickListener()
         {
           publicvoid onClick(DialogInterface dialog, int which)
           {          
           }
         })
         .show();
      }
    }





标签:String,实例,new,android,con,上传,ds,name
From: https://blog.51cto.com/u_548275/6238003

相关文章

  • Android平台下使用HttpUrlConnecti…
    publicstaticStringrequestByPost(Stringurlpath,StringrequestData)throwsIOException{//HTTPconnectionreusewhichwasbuggypre-froyoif(Build.VERSION.SDK_INT<Build.VERSION_CODES.FROYO){URLurl=newURL(urlpath);......
  • 用C/C++在Linux和Android NDK中获取设备的IP地址
    C/C++开发的获取设备IP地址的代码,下面链接中的版本是在Linuxx86-64环境中编译(Centos7.5)的,也可在其它版本的Linux中或者AndroidNDK('armeabi-v7a','arm64-v8a','x86','x86_64'等版本)中编译。下载地址(此版本须在Linuxx86-64环境中运行):金山文档https://kdocs.cn/l/cd4VM3e......
  • IOS上传图片的方法
    下面是图片上传的方法:-(void)loadImage:(NSString*)aurl{NSData*imageData;NSMutableData*postBody;NSString*stringBoundary,*contentType;NSURL*url=[NSURLURLWithString:aurl]......
  • android异常:Can not p…
    本人某个android项目开发阶段一直运行良好,直到上线前夕,在某款跑着android4.03系统的手机运行却报出一下异常,导致forceclose:java.lang.IllegalStateException:CannotperformthisactionafteronSaveInstance!首先得了解一下我那项目的一些基本情况,UI结构是TabActivity包含着5......
  • Android程序中像素(px)跟单位dp(di…
    publicclassUnitTransformUtil{publicstaticintdip2px(Contextcontext,floatdpValue){finalfloatscale=context.getResources().getDisplayMetrics().density;......
  • Android Paint和Color类
      setAntiAlias:设置画笔的锯齿效果。   setColor:设置画笔颜色   setARGB: 设置画笔的a,r,p,g值。   setAlpha: 设置Alpha值   setTextSize:设置字体尺寸。   setStyle: 设置画笔风格,空心或者实心。   setStrokeWidth:设置空心的边框......
  • Android 应用开发之(StrictM…
    最新的Android平台中(Android2.3起),新增加了一个新的类,叫StrictMode(android.os.StrictMode)。这个类可以用来帮助开发者改进他们编写的应用,并且提供了各种的策略,这些策略能随时检查和报告开发者开发应用中存在的问题,比如可以监视那些本不应该在主线程中完成的工作或者其他的一些......
  • Android裁剪图片为圆形图片
    以前在论坛中找过裁剪图片为圆形图片的方法,但是效果都不是很理想,这几天因为公司业务的要求,需要对头像进行裁剪以圆形的方式显示,这个方法是根据传入的图片的高度(height)和宽度(width)决定的,如果是width<=height时,则会裁剪高度,裁剪的区域是宽度不变高度从顶部到宽度width的长度;如果......
  • Android开发多线程断点续传下载器
    111Android开发多线程断点续传下载器分类: Android 2011-10-0123:14931人阅读 评论(8) 收藏 举报使用多线程断点续传下载器在下载的时候多个线程并发可以占用服务器端更多资源,从而加快下载速度,在下载过程中记录每个线程已拷贝数据的数......
  • android开发中使用GZIP压缩传输
    1.class=javaname="code">HTTP压缩可以大大提高浏览网站的速度,它的原理是,在客户端请求网页后,从服务器端将网页文件压缩,再下载到客户端,由客户端的浏览器负责解压缩并浏览。相对于普通的浏览过程HTML,CSS,Javascript,Text,它可以节省40%左右的流量。更为重要的是,它可以对动......