Android上传文件位于指定的$ _POST字段中

时间:2013-10-03 17:29:53

标签: android xml post

我需要将一个非常小的.xml文件上传到php脚本。 此脚本将解析文件,在地图上创建一些内容,然后应用程序将显示结果。

问题是,如果我必须上传一个带有html页面的文件,我创建一个表单,输入一个带有“name = userfile”的输入字段,然后服务器端我在$ _FILES ['userfile']中找到它

如何在android中执行此操作?

用字符串非常简单
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
    nameValuePairs.add("key", "value");

但是现在?

这是我的代码客户端,但似乎没有文件到达服务器:

final String url = "http://www.blablabladasdasd/mysite/test.php";
    String selected = getIntent().getStringExtra("com.example.ghghgh.filename");
    final File file = new File("/storage/sdcard0/myFolder/"+selected + ".xml");
    Log.i("FILE SIZE: ", "" + file.length());

    final WebView mWebView = (WebView) findViewById(R.id.webview);
    mWebView.getSettings().setJavaScriptEnabled(true);
    mWebView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
    mWebView.getSettings().setSaveFormData(true);
    mWebView.setWebViewClient(new MyWebViewClient());



    Thread thread = new Thread()
    {
        public void run()
        {
            HttpClient client = new DefaultHttpClient();
            HttpPost post = new HttpPost(url);
            client.getParams().setParameter("userfile", file);

            try
            {
                HttpResponse response = client.execute(post);
                String res = EntityUtils.toString(response.getEntity());
                Log.i("RESPONSE: ", res);
                mWebView.loadData(res, "text/html", HTTP.UTF_8);

            }
            catch(ClientProtocolException e)
            {
                e.printStackTrace();
            }
            catch(IOException e)
            {
                e.printStackTrace();
            }
        }
    };
    thread.start();

    try
    {
        thread.join();
    }
    catch(InterruptedException e)
    {
        e.printStackTrace();
    }

1 个答案:

答案 0 :(得分:0)

我必须解决类似问题,并在此处找到我的答案: http://blog.tacticalnuclearstrike.com/2010/01/using-multipartentity-in-android-applications/ 基本上,使用一些额外的Apache库可以简化生活。作为奖励,这里是如何做同样的事情,但通过安全(SSL)连接: Secure HTTP Post in Android

您可能会错误解释loadData的文档,因为它需要“base64”或URL编码数据,否则。不是XML或HTML。也许loadURL效果更好?

希望这有帮助