Android的FTP文件上传,然后显示搜索栏和放大器;网络速度地位问题 [英] Android FTP file Uploading then Display Seekbar & network speed status issue
问题描述
在我的Android项目我需要显示搜索栏和网络速度(与文件多少速度上传/使用FTP协议从服务器上下载)。在我的情况,当我尝试上载从模拟器SD卡文件,然后它显示当文件被存储在服务器末的速度和搜索栏,但我的要求是我需要显示sheekbar和网络速度,而该文件被上传到服务器。我不明白的地方我做错了我的code。在HTTP连接的此图像显示搜索栏和TestAvarage速度是罚款这样的,我需要的FTP实现上传文件到服务器。下面是使用FTP远程服务器进行文件上传我的code:
先谢谢了。
@覆盖
保护字符串doInBackground(字符串...为arg0){
诠释计数= 0;
FTPClient ObjFtpCon =新FTPClient();
//Toast.makeText(conFTPasync doInBackground()被称之为,Toast.LENGTH_SHORT).show();
尝试{
runOnUiThread(新的Runnable(){
公共无效的run(){ bar.setProgress(0);
//real_time.setText(0 +秒);
//test_avg.setText(0+kbps的);
//peak.setText(0+kbps的);
}
});
的updateUI(PP,R.drawable.pause);
//ObjFtpCon.connect(\"ftp.customhdclips.com);
ObjFtpCon.connect(FTP+ map.get(URL)的toString());
的updateUI(状态,连接); //如果(ObjFtpCon.login(fstech@customhdclips.com,fstech123)){
如果(ObjFtpCon.login(map.get(用户名)。的toString(),map.get(密码)。的toString())){
的updateUI(状态,连接);
//吐司(连接到FTP服务器:ftp.customhdclips.com);
ObjFtpCon.enterLocalPassiveMode(); //重要!
ObjFtpCon.cwd(/); //发送FTP CWD命令到服务器,接收回复,并返回应答code。
//如果(模式== 0){
如果(的Integer.parseInt((map.get(oprn)。的toString()))== 0){
// 下载
的System.out.println(下载测试被称为);
文件OBJFILE =新的文件(Environment.getExternalStorageDirectory()
+文件分割符+/logo.png); / * *吐司(下载/logo.png);吐司(文件大小
* + objfile.getTotalSpace()+字节); * / objfile.createNewFile();
FileOutputStream中objFos =新的FileOutputStream(OBJFILE);
布尔blnresult = ObjFtpCon.retrieveFile(/ logo.png
objFos);
objFos.close();
如果(blnresult){
//吐司(下载成功);
//吐司(在保存:+
// objfile.getAbsolutePath());
}
// ************ ***********
/ *
文件OBJFILE =新的文件(
Environment.getExternalStorageDirectory()
+文件分割符+/test.txt); //的System.out.println(总+ objfile.getTotalSpace()+字节); objfile.createNewFile();
FileOutputStream中objFos =新的FileOutputStream(OBJFILE);
布尔blnresult = ObjFtpCon.retrieveFile(/的test.txt
objFos);
objFos.close();
如果(blnresult){
的System.out.println(下载的FTP成功);
//吐司(下载成功);
//吐司(在保存:+
// objfile.getAbsolutePath());
} * /
} 其他{
ObjFtpCon.connect(FTP+ map.get(URL)的toString());
的updateUI(状态,连接); ObjFtpCon.login(map.get(用户名)的toString(),map.get(密码)的toString());
ObjFtpCon.enterLocalPassiveMode();
ObjFtpCon.cwd(在/ var / www / html等/ BevdogAnd); ObjFtpCon.setFileType(FTP.BINARY_FILE_TYPE); 最终长开始= System.currentTimeMillis的();
长sleepingTime = 0;
字符串sourceFileUri = extStorageDirectory +/ zkfile+文件名;
文件secondLocalFile =新的文件(sourceFileUri);
长档案大小= secondLocalFile.length();
INT sentBytes = 0;
的InputStream的InputStream =新的FileInputStream(secondLocalFile); 的System.out.println(开始上传第二个文件);
为OutputStream的OutputStream = ObjFtpCon.storeFileStream(文件名);
字节[] = bytesIn新的字节[512];
INT读= 0;
而((读= inputStream.read(bytesIn))!= -1){
的updateUI(状态,上传);
outputStream.write(bytesIn,0,读);
sentBytes + =读;
最终诠释进度=(INT)((sentBytes * 100)/档案大小);
最终长速度= sentBytes; 持续时间=((System.currentTimeMillis的() - 启动)-sleepingTime)/ 1000;
runOnUiThread(新的Runnable(){
公共无效的run(){ bar.setProgress(进度);
如果(时间!= 0){
//test_avg.setText((((speed /持续时间)* 1000)* 0.0078125)+kbps的);
test_avg.setText((速度/时间)/ 1024 +kbps的);
如果(PK< =(速度/时间)/ 1024){
PK =(速度/时间)/ 1024;
}
/ *如果(PK< =((速度/时间)* 1000)* 0.0078125){
PK =(长)(((速度/时间)* 1000)* 0.0078125);
} * /
//peak.setText(pk +kbps的); }
}
});
}
inputStream.close();
outputStream.close(); 布尔完成= ObjFtpCon.completePendingCommand();
的updateUI(状态,已完成);
如果(完成){ }
}
} / * ------------------------------------------------ ------------- * /
/ *
网址URL =新的URL(map.get(URL)的toString());
URLConnection的conexion = url.openConnection();
conexion.connect();
的updateUI(状态,连接); 最终诠释lenghtOfFile = conexion.getContentLength();
InputStream的输入=新的BufferedInputStream(url.openStream());
OutputStream的输出=新的FileOutputStream(
Environment.getExternalStorageDirectory()
+文件分割符
+ Info.getInfo(CON).HTTP_DOWNLOAD_FILE_NAME);
字节的数据[] =新的字节[1024];
总长= 0;
最终长开始= System.currentTimeMillis的();
长sleepingTime = 0;
的System.out.println(开始时间 - +启动);
的updateUI(状态,下载);
而((计数= input.read(数据))!= - 1){
而(睡眠){
视频下载(1000);
sleepingTime + = 1000;
}
总+ =计数;
最终诠释进度=(INT)((总* 100)/ lenghtOfFile);
最终长速度=总;
持续时间=((System.currentTimeMillis的() - 启动)-sleepingTime)/ 1000;
runOnUiThread(新的Runnable(){
公共无效的run(){
bar.setProgress(进度); * / / * ------------------------------------------------ ----------------------- * /
其他{
的System.out.println(输入的密码不正确);
//Toast.makeText(con,用户名和/或密码不正确,Toast.LENGTH_SHORT).show();
}
}
赶上(例外五){
e.printStackTrace();
//吐司(e.getLocalizedMessage());
} 尝试{
ObjFtpCon.logout();
ObjFtpCon.disconnect();
}
赶上(IOException异常五){
e.printStackTrace();
//吐司(e.getLocalizedMessage());
}
返回null;
}
mSeekBar.setOnSeekBarChangeListener(新SeekBar.OnSeekBarChangeListener(){ @覆盖
公共无效onStopTrackingTouch(搜索栏搜索栏){
// TODO自动生成方法存根 } @覆盖
公共无效onStartTrackingTouch(搜索栏搜索栏){
// TODO自动生成方法存根 } @覆盖
公共无效onProgressChanged(搜索栏搜索栏,INT进步,布尔FROMUSER){
// TODO自动生成方法存根
如果(FROMUSER){
mPlayer.seekTo(进度);
mSeekBar.setProgress(进度);
}
}
});
In my android project i need to display seekbar and network speed(With how much speed the file is Uploading/Downloading from server using FTP Protocol). In my situation when i try to upload a file from emulator sdcard then it's showing the speed and seekbar at the end when the file is stored in the server, but my requirement is i need to show sheekbar and network speed while the file is uploading into server. I am not understand where i did wrong in my code. In this attached image showing seekbar and TestAvarage speed for HTTP is fine like this i need to implement in FTP for upload a file to server. Below is my code for file upload using ftp to remote server:
Thanks In Advance.
@Override
protected String doInBackground(String... arg0) {
int count = 0;
FTPClient ObjFtpCon = new FTPClient();
//Toast.makeText(con, "FTPasync doInBackground() is called" ,Toast.LENGTH_SHORT).show();
try {
runOnUiThread(new Runnable() {
public void run() {
bar.setProgress(0);
//real_time.setText(0 + " secs");
//test_avg.setText(0+ " kbps");
//peak.setText(0+" kbps");
}
});
updateUI(pp, R.drawable.pause);
//ObjFtpCon.connect("ftp.customhdclips.com");
ObjFtpCon.connect("ftp."+map.get("url").toString());
updateUI(status, "Connecting");
//if (ObjFtpCon.login("fstech@customhdclips.com", "fstech123")) {
if (ObjFtpCon.login(map.get("username").toString(), map.get("password").toString())) {
updateUI(status, "Connected");
// toast("Connected to FTP Server : ftp.customhdclips.com");
ObjFtpCon.enterLocalPassiveMode(); // important!
ObjFtpCon.cwd("/");// to send the FTP CWD command to the server, receive the reply, and return the reply code.
//if (mode == 0) {
if(Integer.parseInt((map.get("oprn").toString()))== 0){
// Download
System.out.println("download test is called");
File objfile = new File(Environment.getExternalStorageDirectory()
+ File.separator + "/logo.png");
/* * toast("Downloading /logo.png"); toast("File Size : "
* + objfile.getTotalSpace() + " bytes");*/
objfile.createNewFile();
FileOutputStream objFos = new FileOutputStream(objfile);
boolean blnresult = ObjFtpCon.retrieveFile("/logo.png",
objFos);
objFos.close();
if (blnresult) {
// toast("Download succeeded");
// toast("Stored at : " +
// objfile.getAbsolutePath());
}
//***********************************************************
/*
File objfile = new File(
Environment.getExternalStorageDirectory()
+ File.separator + "/test.txt");
// System.out.println("total" + objfile.getTotalSpace() + " bytes");
objfile.createNewFile();
FileOutputStream objFos = new FileOutputStream(objfile);
boolean blnresult = ObjFtpCon.retrieveFile("/test.txt",
objFos);
objFos.close();
if (blnresult) {
System.out.println("download in ftp is successful");
// toast("Download succeeded");
// toast("Stored at : " +
// objfile.getAbsolutePath());
}*/
}
else {
ObjFtpCon.connect("ftp."+map.get("url").toString());
updateUI(status, "Connecting");
ObjFtpCon.login(map.get("username").toString(), map.get("password").toString());
ObjFtpCon.enterLocalPassiveMode();
ObjFtpCon.cwd("/var/www/html/BevdogAnd");
ObjFtpCon.setFileType(FTP.BINARY_FILE_TYPE);
final long started = System.currentTimeMillis();
long sleepingTime= 0;
String sourceFileUri =extStorageDirectory+"/zkfile"+filename;
File secondLocalFile = new File(sourceFileUri);
long fileSize = secondLocalFile.length();
int sentBytes = 0;
InputStream inputStream = new FileInputStream(secondLocalFile);
System.out.println("Start uploading second file");
OutputStream outputStream = ObjFtpCon.storeFileStream(filename);
byte[] bytesIn = new byte[512];
int read = 0;
while ((read = inputStream.read(bytesIn)) != -1) {
updateUI(status, "Uploading");
outputStream.write(bytesIn, 0, read);
sentBytes+=read;
final int progress = (int) ((sentBytes * 100) / fileSize);
final long speed = sentBytes;
duration = ((System.currentTimeMillis() - started)-sleepingTime) / 1000;
runOnUiThread(new Runnable() {
public void run() {
bar.setProgress(progress);
if (duration != 0) {
//test_avg.setText((((speed / duration)*1000)*0.0078125) + " kbps");
test_avg.setText((speed / duration) / 1024 + " kbps");
if (pk <= (speed / duration) / 1024) {
pk = (speed / duration) / 1024;
}
/*if (pk <= ((speed / duration)*1000)*0.0078125) {
pk = (long)(((speed / duration)*1000)*0.0078125);
}*/
//peak.setText(pk + " kbps");
}
}
});
}
inputStream.close();
outputStream.close();
boolean completed = ObjFtpCon.completePendingCommand();
updateUI(status, "Completed");
if (completed) {
}
}
}
/*-------------------------------------------------------------*/
/*
URL url = new URL(map.get("url").toString());
URLConnection conexion = url.openConnection();
conexion.connect();
updateUI(status, "Connected");
final int lenghtOfFile = conexion.getContentLength();
InputStream input = new BufferedInputStream(url.openStream());
OutputStream output = new FileOutputStream(
Environment.getExternalStorageDirectory()
+ File.separator
+ Info.getInfo(con).HTTP_DOWNLOAD_FILE_NAME);
byte data[] = new byte[1024];
long total = 0;
final long started = System.currentTimeMillis();
long sleepingTime= 0;
System.out.println("started time --"+started);
updateUI(status, "Downloading");
while ((count = input.read(data)) != -1) {
while (sleep) {
Thread.sleep(1000);
sleepingTime +=1000;
}
total += count;
final int progress = (int) ((total * 100) / lenghtOfFile);
final long speed = total;
duration = ((System.currentTimeMillis() - started)-sleepingTime) / 1000;
runOnUiThread(new Runnable() {
public void run() {
bar.setProgress(progress);
*/
/*-----------------------------------------------------------------------*/
else{
System.out.println("password entered is incorrect");
//Toast.makeText(con, "Username or/and password is incorrect", Toast.LENGTH_SHORT).show();
}
}
catch (Exception e) {
e.printStackTrace();
// toast(e.getLocalizedMessage());
}
try {
ObjFtpCon.logout();
ObjFtpCon.disconnect();
}
catch (IOException e) {
e.printStackTrace();
// toast(e.getLocalizedMessage());
}
return null;
}
mSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
// TODO Auto-generated method stub
if(fromUser){
mPlayer.seekTo(progress);
mSeekBar.setProgress(progress);
}
}
});
这篇关于Android的FTP文件上传,然后显示搜索栏和放大器;网络速度地位问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!