导航:首页 > 操作系统 > androidstorefile

androidstorefile

发布时间:2023-03-29 23:16:54

android中如何上传图片到FTP服务器

在安卓环境下可以使用,在java环境下也可以使用,已经在Java环境下实现了功能,然后移植到了安卓手机上,其它都是一样的。

[java] view plain
package com.photo;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;

import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;

public class FileTool {

/**
* Description: 向FTP服务器上传文件
*
* @param url
* FTP服务器hostname
* @param port
* FTP服务器端口
* @param username
* FTP登录账号
* @param password
* FTP登录密码
* @param path
* FTP服务器保存目录,是linux下的目录形式,如/photo/
* @param filename
* 上传到FTP服务器上的文件名,是自己定义的名字,
* @param input
* 输入流
* @return 成功返回true,否则返回false
*/
public static boolean uploadFile(String url, int port, String username,
String password, String path, String filename, InputStream input) {
boolean success = false;
FTPClient ftp = new FTPClient();

try {
int reply;
ftp.connect(url, port);// 连接FTP服务器
// 如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器
ftp.login(username, password);//登录
reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
return success;
}
ftp.changeWorkingDirectory(path);
ftp.storeFile(filename, input);

input.close();
ftp.logout();
success = true;
} catch (IOException e) {
e.printStackTrace();
} finally {
if (ftp.isConnected()) {
try {
ftp.disconnect();
} catch (IOException ioe) {
}
}
}
return success;
}

// 测试
public static void main(String[] args) {

FileInputStream in = null ;
File dir = new File("G://pathnew");
File files[] = dir.listFiles();
if(dir.isDirectory()) {
for(int i=0;i<files.length;i++) {
try {
in = new FileInputStream(files[i]);
boolean flag = uploadFile("17.8.119.77", 21, "android", "android",
"/photo/", "412424123412341234_20130715120334_" + i + ".jpg", in);
System.out.println(flag);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}

}
}

以上为java代码,下面是android代码。

[java] view plain
package com.ftp;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;

import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;

public class MainActivity extends Activity {

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

new uploadThread().start();
}

class uploadThread extends Thread {
@Override
public void run() {
FileInputStream in = null ;
File dir = new File("/mnt/sdcard/DCIM/Camera/test/");
File files[] = dir.listFiles();
if(dir.isDirectory()) {
for(int i=0;i<files.length;i++) {
try {
in = new FileInputStream(files[i]);
boolean flag = FileTool.uploadFile("17.8.119.77", 21, "android", "android",
"/", "412424123412341234_20130715120334_" + i + ".jpg", in);
System.out.println(flag);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
}
}
}

⑵ Android开发Tinker热更新的问题

通过阅读官方的技术文档,始终没有发现有对这个情况的相关配置项,所以只能从别处下手,最后发现,通过在 app mole 的 “build.gradle” 文件中,注释掉依赖插件脚本,最终解决掉这个问题:

说两句:
目前运行调试一切正常,不过要始终留意后续是否会出现问题;重要的一点是,当要打包新版本时,一定要解开这个注释。

2、can’t the get signConfig for this build

问题:
执行 buildTinkerPatchRelease 打 Release 版本补丁包时报以下错误:

Error:Execution failed for task ':app:tinkerPatchRelease'.
> can't the get signConfig for this build
1
2

解决:

android {
...
// 签名配置【buildTypes中调用了signingConfigs,则signingConfigs{}要置于buildTypes{}前面】
signingConfigs {
release {
try {
storeFile file("MyProject.jks")
storePassword "111111"
keyAlias "zhangzeqiao"
keyPassword "111111"
} catch (ex) {
throw new InvalidUserDataException(ex.toString())
}
}
}

buildTypes {
release {
...
signingConfig signingConfigs.release
}
debug {
...
signingConfig signingConfigs.release
}
}
...
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
其中要特别注意,signingConfigs{} 方法体要置于 buildTypes{} 方法体前面,不然会报以下错误:

⑶ AndroidStudio4.0.1版本无法快速新建Activity解决办法

AndroidStudio4.0.1版本,新建Activity的时候,点击finish之后新建失败没有产生对应的Java及xml文件且没有任何提示,如下图方式新建:

问题原因:signingConfigs的写法跟之前的版本有些不同。

解决办法:改成新版本的方式即可恢复新建Activity的功能。

注意事项:

mole下的 build.gradle文件,如果你需要配置signingConfigs模块,那么有两个规则需要遵守

1,signingConfigs模块的配置需要写在buildTypes模块之前

android {

    ……

    signingConfigs {

    ...…

     }

    buildTypes {

         release {

           ……

          }

          debug {

           ……

          }

     }

}

如果不按顺序写,会报 Could not get unknown property 'xxxxxxx' for SigningConfig container of type org.gradle.api.internal.的错误

2,signingConfigs模块里面不能出现debug之类的乱念关键字

      我之前的写法如下所示(4.0版本不适用):

      //错误写法

          signingConfigs {

                   debug {

                           storeFile file('key地址')

                           storePassword "密码"

                            keyAlias "Alias名称"

                            keyPassword "密码"

               }

         }

           buildTypes {

                 debug {

                          ……

                         signingConfig signingConfigs.debug

           }

   }

//正确写法,把signingConfigs模块里的 “debug ”改成其他名字,例如改成test

signingConfigs {

              test{

                  storeFile file('key地址'滑烂)

                  storePassword "密码"

                  keyAlias "Alias名称"

                  keyPassword "密码"

 哗让困            }

}

buildTypes {

           debug {

                        ……

                        signingConfig signingConfigs.test

            }

}

修改完后,把项目里的build文件夹里面的output.json文件删掉,再次新建,新建成功

⑷ Android Studio 生成正式签名apk(app-release.apk)的两种方式

方式一:使用Android Studio生成

1.点击Build->Generate,首次点击可能会提示输入操作系统密码

2.弹出如下对话框,因为我们还没有生成过keystore ,所以点击Create new,新建keystore

3.填写相关内容

Key store path 是 keystore的存放路径
Alias 是别名,填写APP名称即可,别的名称你记得住的也行

validity 是有效期限。
两种密码结合上一幅图看

填写完成后点击ok
(记得备份,因为以后这个apk的新版本都是用这个keystore了)

4.弹出此窗口,自动填充好了这密码和别名,Next

如果点击了Remember passwords 可能需要输入操作系统密码。

5.填写路径,选择签名版本,点击Finish

V2是Android 7.0出现的更安全更快速的签名方式。

点击ShowInExplore,或者自己打开路径,就可以看到app-release.apk了
方式二:使用Gradle 生成

1.编辑 根目录文件 gradle.properties

添加如下内容:

KEY_PATH=D:/Android/test1.jks
KEY_PASS=12345678
ALIAS_NAME=test
ALIAS_PASS=12345678
2.编辑 app/build.gradle 读取指定的路径密码
在android 闭包中添加signingConfigs闭包:

android {
compileSdkVersion 25
buildToolsVersion "25.0.3"
defaultConfig {
applicationId "com.example.test"
minSdkVersion 16
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
signingConfigs {
config {
storeFile file(KEY_PATH)
storePassword KEY_PASS
keyAlias ALIAS_NAME
keyPassword ALIAS_PASS
}
}

在buildTypes release 闭包中添加 signingConfig signingConfigs.config 应用前面的签名配置(ps:signingConfigs闭包必须在buildTypes闭包前)

buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.config
}
}

3.点击右侧工具栏的Gradle->项目名->:app->Tasks->build

assemble 用于生成测试版和正式版的apk

assembleDebug 用于生成测试版apk

阅读全文

与androidstorefile相关的资料

热点内容
plt转pdf 浏览:360
魔兽60宏命令大全 浏览:475
php志愿者网站源码 浏览:872
贸易pdf 浏览:495
dbug命令 浏览:351
开逛app如何加好友 浏览:958
ftpdos命令下载文件 浏览:75
华为如何打开语音服务器 浏览:242
python中的idle 浏览:1000
五轴联动数控编程 浏览:965
换一台电脑如何远程云服务器 浏览:132
阿里云怎么买云服务器 浏览:664
java提取文字 浏览:97
阿里云服务器同人账号问题 浏览:420
5分钟解压轴题 浏览:341
安卓桌面二级文件夹 浏览:188
eps文档加密 浏览:261
手机怎么做pdf 浏览:162
ug曲面pdf 浏览:279
液化气还是压缩气 浏览:950