如何调用android的拍照或本地相册选取,然后再实现相片上传服务器

如何调用android的拍照或本地相册选取,然后再实现相片上传服务器,第1张

首先是拍照:使用Intent即可,
[java] view plaincopyprint
01final String start = EnvironmentgetExternalStorageState();
02private static final String PHOTOPATH = "/photo/";
03
04if(startequals(EnvironmentMEDIA_MOUNTED)){
05Intent intent = new Intent(MediaStoreACTION_IMAGE_CAPTURE);
06File file = new File(EnvironmentgetExternalStorageDirectory()+PHOTOPATH);
07if(!fileexists()){
08filemkdirs();
09}
10tempphontname = SystemcurrentTimeMillis()+"jpg";
11bufferappend(EnvironmentgetExternalStorageDirectory()+PHOTOPATH)append(tempphontname);
12intentputExtra(MediaStoreEXTRA_OUTPUT, UrifromFile(new File(buffertoString())));
13startActivityForResult(intent, 1);
14}
final String start = EnvironmentgetExternalStorageState();
private static final String PHOTOPATH = "/photo/";
if(startequals(EnvironmentMEDIA_MOUNTED)){
Intent intent = new Intent(MediaStoreACTION_IMAGE_CAPTURE);
File file = new File(EnvironmentgetExternalStorageDirectory()+PHOTOPATH);
if(!fileexists()){
filemkdirs();
}
tempphontname = SystemcurrentTimeMillis()+"jpg";
bufferappend(EnvironmentgetExternalStorageDirectory()+PHOTOPATH)append(tempphontname);
intentputExtra(MediaStoreEXTRA_OUTPUT, UrifromFile(new File(buffertoString())));
startActivityForResult(intent, 1);
}


其次是从本地相册选:依旧是Intent
如下代码:
[java] view plaincopyprint
01if(startequals(EnvironmentMEDIA_MOUNTED)){
02 Intent getImage = new Intent(IntentACTION_GET_CONTENT);
03 getImageaddCategory(IntentCATEGORY_OPENABLE);
04 getImagesetType("image/jpeg");
05 startActivityForResult(getImage, 0);
06}
if(startequals(EnvironmentMEDIA_MOUNTED)){
Intent getImage = new Intent(IntentACTION_GET_CONTENT);
getImageaddCategory(IntentCATEGORY_OPENABLE);
getImagesetType("image/jpeg");
startActivityForResult(getImage, 0);
}
接下来是主要的:因为调用完系统的方法后,回返回到回调方法onActivityResult(int, int, Intent)中,
在里面进行主要的照片上传服务器的 *** 作,
见代码:
[java] view plaincopyprint
01@Override
02 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
03 ContentResolver resolver = getContentResolver();
04 if(requestCode==1)//
05 {
06 if(resultCode==ActivityRESULT_OK)
07 {
08 if(EnvironmentgetExternalStorageState()equals(EnvironmentMEDIA_MOUNTED))
09 {
10ew Thread(new Runnable()
11 {
12 @Override
13 public void run() {
14//进行上传 *** 作
15}
16}start();
转载

hello, 建FTP服务器同步是比较稳妥,便捷的方法啦。一般都是这样做。。我是用的BestSync同步软件实现的。你说的功能都有滴~~比如:1. 你本地装上软件以后,在主菜单里面编辑-->追加任务 文件夹1选择 驱动盘中要备份的文件夹位置 文件夹2选择 选择FTP(填写FTP地址等相关参数) 同步方向为 文件夹1肺募校病≡凇1739疲裕猩瓒ā∠旅嫣钚捶衿鞯刂998账户名密码等信息)然后选择完成按钮2. 在主界面下17双击你刚建立的任务,会d出属性对话框3. 选择“日程”属性页9勾选最后一个复选框“按指定日程启动任务”,然后在下面选择你想同步的具体时间点就Ok了~~嘿嘿过滤和文件改名功能的话,你双击任务,在“过滤” 和“文件改名”属性页里面填写就好啦希望对你有帮助哈~~

1、自建局域网DNS服务器,把某个冷域名指向你那台文件服务器;
2、在DHCP服务器中,把DNS服务器指向你建的那个局域网DNS服务器;
3、文件服务器,如果是非静态IP,那么用DDNS技术,如果是静太IP,那就好办;
4、在文件服务器上开启SAMBA、FTP、HTML共享;
5、在交换机上,或者路由器上设置到达文件服务器的路由;
6、在客户机上,用\\domain name访问也可以,用浏览器访问也可以,用FTP软件访问也可以,如果高级点,你还可以配合数据库添加用户,控制权限等……

需要这样的一个包 jcifs-1111
public static void forcdt(String dir){
InputStream in = null;
OutputStream out = null;
File localFile = new File(dir);
try{
//创建file类 传入本地文件路径
//获得本地文件的名字
String fileName = localFilegetName();
//将本地文件的名字和远程目录的名字拼接在一起
//确保上传后的文件于本地文件名字相同
SmbFile remoteFile = new SmbFile("smb://administrator:admin@10001/e$/aa/");
//创建读取缓冲流把本地的文件与程序连接在一起
in = new BufferedInputStream(new FileInputStream(localFile));
//创建一个写出缓冲流(注意jcifs-1315jar包 类名为Smb开头的类为控制远程共享计算机"io"包)
//将远程的文件路径传入SmbFileOutputStream中 并用 缓冲流套接
out = new BufferedOutputStream(new SmbFileOutputStream(remoteFile+"/"+fileName));
//创建中转字节数组
byte[] buffer = new byte[1024];
while(inread(buffer)!=-1){//in对象的read方法返回-1为 文件以读取完毕
outwrite(buffer);
buffer = new byte[1024];
}
}catch(Exception e){
eprintStackTrace();
}finally{
try{
//注意用完 *** 作io对象的方法后关闭这些资源,走则 造成文件上传失败等问题。!
outclose();
inclose();
}catch(Exception e){
eprintStackTrace();}
}
}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10477183.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-09
下一篇 2023-05-09

发表评论

登录后才能评论

评论列表(0条)

保存