我想创建一个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参数。
我想知道这是否是一种可能的方法。如果没有,则任何指针/建议都会有所帮助。
先谢谢。