0
点赞
收藏
分享

微信扫一扫

android上传图片至服务器


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



服务器servlet代码
publicvoid doPost(HttpServletRequest request, HttpServletResponse response)  

           throws ServletException, IOException {  


           String temp=request.getSession().getServletContext().getRealPath("/")+"temp";   //临时目录
           System.out.println("temp="+temp);

           String loadpath=request.getSession().getServletContext().getRealPath("/")+"Image"; //上传文件存放目录
           System.out.println("loadpath="+loadpath);

           DiskFileUpload fu =new DiskFileUpload();

           fu.setSizeMax(1*1024*1024);   // 设置允许用户上传文件大小,单位:字节
           fu.setSizeThreshold(4096);   // 设置最多只允许在内存中存储的数据,单位:字节
           fu.setRepositoryPath(temp); // 设置一旦文件大小超过getSizeThreshold()的值时数据存放在硬盘的目录

//开始读取上传信息
int index=0;

           List fileItems =null;


try {

                                        fileItems = fu.parseRequest(request);

                                         System.out.println("fileItems="+fileItems);

                                } catch (Exception e) {

                                        e.printStackTrace();

                                }



           Iterator iter = fileItems.iterator(); // 依次处理每个上传的文件
while (iter.hasNext())

           {

               FileItem item = (FileItem)iter.next();// 忽略其他不是文件域的所有表单信息
if (!item.isFormField())

               {

                   String name = item.getName();//获取上传文件名,包括路径
                   name=name.substring(name.lastIndexOf("\\")+1);//从全路径中提取文件名
long size = item.getSize();
if((name==null||name.equals("")) && size==0)
continue;
int point = name.indexOf(".");

                   name=(new Date()).getTime()+name.substring(point,name.length())+index;

                   index++;

                   File fNew=new File(loadpath, name);
try {

                                        item.write(fNew);

                                } catch (Exception e) {
// TODO Auto-generated catch block
                                        e.printStackTrace();

                                }



               }
else//取出不是文件域的所有表单信息
               {

                   String fieldvalue = item.getString();
//如果包含中文应写为:(转为UTF-8编码)
//String fieldvalue = new String(item.getString().getBytes(),"UTF-8");
               }

           }

           String text1="11";

           response.sendRedirect("result.jsp?text1="+ text1);

    }


android客户端代码


publicclass 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();

      }

    }

举报

相关推荐

0 条评论