在Android应用上浏览文件

时间:2014-06-27 09:35:18

标签: java android cordova

我想创建一个Android应用。将有一个表单允许用户使用html标签选择文件。表单上还有一个提交按钮,其中所选文件应从Android设备复制到服务器上的某个位置。

现在表单在html页面上,我一直在使用phonegap进行开发。

截至目前,我已经创建了一个插件,它从sdcard文件夹中读取文件并使用jsch库我在sftp服务器上上传文件。

在研究时,我发现很多人都在使用以下方法: 表单详细信息发布到服务器并使用php脚本使用$ _FILES读取文件内容(但我不想遵循此方法)

我需要一种方法,这样当用户使用浏览选项选择文件时,将在发布表单时拾取此文件名。

例如下面是MainActivity.java文件的代码

package com.example.filepicker;

import java.io.IOException;
import java.net.URI;

import org.apache.cordova.DroidGap;
import org.apache.http.client.methods.HttpGet;

import android.util.Log;
import android.view.Display;
import android.webkit.WebSettings.RenderPriority;
import android.view.WindowManager;
import android.content.Context;
import android.database.SQLException;
import android.os.Bundle;
import android.util.Log;
import android.view.Display;
import android.view.Menu;

public class MainActivity extends /* Activity */DroidGap {


    private Object request;


    // @Override
    // protected void onCreate(Bundle savedInstanceState) {
    // super.onCreate(savedInstanceState);
    // setContentView(R.layout.activity_main);
    // }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        super.init();
        appView.addJavascriptInterface(this, "MainActivity");

        super.loadUrl("file:///android_asset/www/index.html");

    }


    public void onFormSubmit() {
       //this  method is to be invoked when the user clicks form submit button

       Log.i("Custom Function Called", "Custom Function Called");


    }
}  

的index.html

<!DOCTYPE html>  
<html>              
<head>          
<title>XXXX | INDEX</title>                     
<script type="text/javascript" charset="utf-8" src="js/jquery-1.9.1.js"></script>  
<script type="text/javascript" charset="utf-8" src="js/cordova.js"></script>
<script type="text/javascript" charset="utf-8" src="js/toast.js"></script>
<script type="text/javascript" charset="utf-8" src="js/jquery.magnific-popup.min.js"></script> 
<script type="text/javascript" src="js/jquery.mCustomScrollbar.concat.min.js"></script> 
<script type="text/javascript" charset="utf-8" src="js/FileUploadPlugin.js"></script> 
<link rel="stylesheet" type="text/css" href="css/style.css" >
<link rel="stylesheet" type="text/css" href="css/bootstrap.css" />
<link rel="stylesheet" type="text/css" href="css/media-query.css" />  
<link rel="stylesheet" type="text/css" href="css/magnific-popup.css" />
<link rel="stylesheet" type="text/css" href="css/jquery.mCustomScrollbar.css" />
<script type="text/javascript">             

    // Wait for device API libraries to load
    //
    document.addEventListener("deviceready", onDeviceReady, false);

    // device APIs are available
    //
    function onDeviceReady() {
    alert('device is ready');

    var fileupload1 = new FileUploadPlugin();
         var ipaddress = "xxxxxxx";       
         var userId ="xxx";
         var password = "xxx";

    /*cordova.exec(onFileSystemSuccess, fail, "FileUploadPlugin", "echo",
     [ipaddress,userId,password]); */

  /*cordova.exec(onFileSystemSuccess, fail, "FileUploadPlugin", "display",
     ["DEF"]);   */
    /* callNewActivity();*/

     alert('after execution is called');

 }

    function onFileSystemSuccess(result) {
    alert('on success'+result);
   // alert('msg'+msg);
    // alert('on status'+status); 
   console.log('this is success');
  /*     console.log(result); */


       /* console.log(fileSystem.name);
        console.log(fileSystem.root.name);*/
    }

    function fail(error) {
     alert('on failure'+error);
     console.log('this is error');
    alert('err code'+evt.target.error.code);
    /*    console.log(evt.target.error.code);
        */
    }

     function onFormSubmit() {
        window.MainActivity.onFormSubmit();
    }



</script>                                                                                                                                                   
</head>                                                                     
<body>
<div data-role="page">
    <div data-role="header">
        <h1>Attach File</h1>
    </div>
    <div data-role="content">
        <form id="file-attachment-form" action="http://PutYourServerURL">
           <div data-role="fieldcontain">
                <label for="data">Put some text:</label>
                <input name="data" type="text" id="data"/>
            </div>

            <div data-role="fieldcontain">
                <label for="attachment">Attachment:</label>
                <input type="file" name="attachment" id="attachment"/>
            </div> 

            <input type="submit" value="Submit"/>
        </form>
    </div>
    <script>
        $('#file-attachment-form').submit(function () {
            formData = new FormData($(this)[0]);
            alert('new '+formData);
/*console.log(formData);*/
          /*  $.ajax({
                type:'POST',
                url:$('#file-attachment-form').attr('action'),
                data:formData,
                contentType: false,
                processData: false,
                error:function (jqXHR, textStatus, errorThrown) {
                    alert('Failed to upload file')
                },
                success:function () {
                    alert('File uploaded')
                }
            })*/
            /*alert('formData = '+formData);*/
            onFormSubmit();



        });
    </script>
</div>
</body>
</html>

例如,MainActivity.java文件将有一个名为&#34; onFormSubmit&#34;的函数。这个函数应该能够读取files参数。

我想知道这是否是一种可能的方法。如果没有,则任何指针/建议都会有所帮助。

先谢谢。

0 个答案:

没有答案
相关问题