android批量上传数据
① 安卓怎么批量上传图片一次性传百张。哪个地方可以上传原始尺寸图片打开不像网盘图片那样慢像百度贴
用“网络云”试试吧,我用的还可以,可以用手机或电脑批量上传到网络网盘,用电脑浏览时,打开网络网盘就像打开自己的电脑硬盘一样,可以复制粘贴删除什么的,图片文件是原始尺寸的。
② Android图片批量上传的功能。(图片比较大)
Android中上传图片或者下载图片,使用最多的是xUtils和imageloader、glide,选用这两种的哪一种框架都行,因为是批量和图片大容易造成界面卡以及上传速度慢,对图片操作不当就容易造成OOM异常,一般对于批量上传大图片都需要对图片也处理,然后在上传第一步需要对图片进行比例压缩之后再进行质量压缩,处理之后的图片比之前的图片会小很多,再加上框架的上传处理,会有很好的效果,希望对你有所帮助
③ android如何实现图片批量上传
首先,以下架构下的批量文件上传可能会失败或者不会成功:
1.android客户端+springMVC服务端:服务端采用org.springframework.web.multipart.MultipartHttpServletRequest作为批量上传接收类,这种搭配下的批量文件上传会失败,最终服务端只会接受到一个文件,即只会接受到第一个文件。可能因为MultipartHttpServletRequest对servlet原本的HttpServletRequest类进行封装,导致批量上传有问题。
2.android客户端+strutsMVC服务端:
上传成功的方案:
采用android客户端+Servlet(HttpServletRequest)进行文件上传。
Servlet端代码如下:
[java] view plainprint?
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
try
{
List items = upload.parseRequest(request);
Iterator itr = items.iterator();
while (itr.hasNext())
{
FileItem item = (FileItem) itr.next();
if (item.isFormField())
{
System.out.println("表单参数名:" + item.getFieldName() + ",表单参数值:" + item.getString("UTF-8"));
}
else
{
if (item.getName() != null && !item.getName().equals(""))
{
System.out.println("上传文件的大小:" + item.getSize());
System.out.println("上传文件的类型:" + item.getContentType());
// item.getName()返回上传文件在客户端的完整路径名称
System.out.println("上传文件的名称:" + item.getName());
File tempFile = new File(item.getName());
// 上传文件的保存路径
File file = new File(sc.getRealPath("/") + savePath, tempFile.getName());
item.write(file);
request.setAttribute("upload.message", "上传文件成功!");
} else
{
request.setAttribute("upload.message", "没有选择上传文件!");
}
}
}
}
catch (FileUploadException e)
{
e.printStackTrace();
}
catch (Exception e)
{
e.printStackTrace();
request.setAttribute("upload.message", "上传文件失败!");
}
request.getRequestDispatcher("/uploadResult.jsp").forward(request, response);
android端代码如下:
[java] view plainprint?
public class SocketHttpRequester {
/**
*多文件上传
* 直接通过HTTP协议提交数据到服务器,实现如下面表单提交功能:
* <FORM METHOD=POST ACTION="http://192.168.1.101:8083/upload/servlet/UploadServlet" enctype="multipart/form-data">
<INPUT TYPE="text" NAME="name">
<INPUT TYPE="text" NAME="id">
<input type="file" name="imagefile"/>
<input type="file" name="zip"/>
</FORM>
* @param path 上传路径(注:避免使用localhost或127.0.0.1这样的路径测试,因为它会指向手机模拟器,你可以使用http://www.iteye.cn或http://192.168.1.101:8083这样的路径测试)
* @param params 请求参数 key为参数名,value为参数值
* @param file 上传文件
*/
public static boolean post(String path, Map<String, String> params, FormFile[] files) throws Exception{
final String BOUNDARY = "---------------------------7da2137580612"; //数据分隔线
final String endline = "--" + BOUNDARY + "--\r\n";//数据结束标志
int fileDataLength = 0;
for(FormFile uploadFile : files){//得到文件类型数据的总长度
StringBuilder fileExplain = new StringBuilder();
fileExplain.append("--");
fileExplain.append(BOUNDARY);
fileExplain.append("\r\n");
fileExplain.append("Content-Disposition: form-data;name=\""+ uploadFile.getParameterName()+"\";filename=\""+ uploadFile.getFilname() + "\"\r\n");
fileExplain.append("Content-Type: "+ uploadFile.getContentType()+"\r\n\r\n");
fileExplain.append("\r\n");
fileDataLength += fileExplain.length();
if(uploadFile.getInStream()!=null){
fileDataLength += uploadFile.getFile().length();
}else{
fileDataLength += uploadFile.getData().length;
}
}
StringBuilder textEntity = new StringBuilder();
for (Map.Entry<String, String> entry : params.entrySet()) {//构造文本类型参数的实体数据
textEntity.append("--");
textEntity.append(BOUNDARY);
textEntity.append("\r\n");
textEntity.append("Content-Disposition: form-data; name=\""+ entry.getKey() + "\"\r\n\r\n");
textEntity.append(entry.getValue());
textEntity.append("\r\n");
}
//计算传输给服务器的实体数据总长度
int dataLength = textEntity.toString().getBytes().length + fileDataLength + endline.getBytes().length;
URL url = new URL(path);
int port = url.getPort()==-1 ? 80 : url.getPort();
Socket socket = new Socket(InetAddress.getByName(url.getHost()), port);
OutputStream outStream = socket.getOutputStream();
//下面完成HTTP请求头的发送
String requestmethod = "POST "+ url.getPath()+" HTTP/1.1\r\n";
outStream.write(requestmethod.getBytes());
String accept = "Accept: image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave-flash, application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-xbap, application/x-ms-application, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*\r\n";
outStream.write(accept.getBytes());
String language = "Accept-Language: zh-CN\r\n";
outStream.write(language.getBytes());
String contenttype = "Content-Type: multipart/form-data; boundary="+ BOUNDARY+ "\r\n";
outStream.write(contenttype.getBytes());
String contentlength = "Content-Length: "+ dataLength + "\r\n";
outStream.write(contentlength.getBytes());
String alive = "Connection: Keep-Alive\r\n";
outStream.write(alive.getBytes());
String host = "Host: "+ url.getHost() +":"+ port +"\r\n";
outStream.write(host.getBytes());
//写完HTTP请求头后根据HTTP协议再写一个回车换行
outStream.write("\r\n".getBytes());
//把所有文本类型的实体数据发送出来
outStream.write(textEntity.toString().getBytes());
//把所有文件类型的实体数据发送出来
for(FormFile uploadFile : files){
StringBuilder fileEntity = new StringBuilder();
fileEntity.append("--");
fileEntity.append(BOUNDARY);
fileEntity.append("\r\n");
fileEntity.append("Content-Disposition: form-data;name=\""+ uploadFile.getParameterName()+"\";filename=\""+ uploadFile.getFilname() + "\"\r\n");
fileEntity.append("Content-Type: "+ uploadFile.getContentType()+"\r\n\r\n");
outStream.write(fileEntity.toString().getBytes());
if(uploadFile.getInStream()!=null){
byte[] buffer = new byte[1024];
int len = 0;
while((len = uploadFile.getInStream().read(buffer, 0, 1024))!=-1){
outStream.write(buffer, 0, len);
}
uploadFile.getInStream().close();
}else{
outStream.write(uploadFile.getData(), 0, uploadFile.getData().length);
}
outStream.write("\r\n".getBytes());
}
//下面发送数据结束标志,表示数据已经结束
outStream.write(endline.getBytes());
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
if(reader.readLine().indexOf("200")==-1){//读取web服务器返回的数据,判断请求码是否为200,如果不是200,代表请求失败
return false;
}
outStream.flush();
outStream.close();
reader.close();
socket.close();
return true;
}
/**
*单文件上传
* 提交数据到服务器
* @param path 上传路径(注:避免使用localhost或127.0.0.1这样的路径测试,因为它会指向手机模拟器,你可以使用http://www.itcast.cn或http://192.168.1.10:8080这样的路径测试)
* @param params 请求参数 key为参数名,value为参数值
* @param file 上传文件
*/
public static boolean post(String path, Map<String, String> params, FormFile file) throws Exception{
return post(path, params, new FormFile[]{file});
}
}
④ android手机里面的照片能批量上传到服务器吗
这个图片存放的位置是根据你的图片来源而定的。一般是放在sdcard下的某个目录下的,
。我来给你说下思路:服务端(android手机)这边需要写个工具类,来遍历SD卡下的文件,只显示jpg和png的图片。主类中有个按钮来添加图片,还有一个按钮是用来上传图片,然后写个监听,用来接收服务端发回的消息。...服务端这边写个监听来接收客户端发来的消息,保存发过来的数据流。至于手机上能显示这张图片,只要在写个imageview,把图片资源加载上就ok啦,你可以去网上搜索一下“sd上的文件上传”,希望可以帮到你哦哦
⑤ Android端用json批量上传多图片,求服务端代码,如何解析并保存到服务器。谢谢各位大神
你先要看Android 端怎么给你传的啊
json是本质是怎么? 字符串啊
传图可以通过以下方式(最终都是以流的形式传递,但是格式不一样):
1、流 移动端将图片转为字节流 传递, 你直接就获取流 然后转图片
2、字符串 移动端将图片转为一个字符串(很长),然后传递,你后台就获取字符串
3、压缩文件 文件传输(也是流),后台获取流转文件
你说json的话,那他是将图转为字符串?
或者他其实是用网络框架提供的传递文件的方法直接传递的图?
再或者他是写的文件读写流?
然后你就网络你框架(Spring MVC?)怎么获取
⑥ 安卓手机如何快速把照片导入电脑
1、第一种方法是通过USB数据线连接电脑,首先,我们不使用任何第三方软件的情况,可以直接通过数据线连接手机与电脑,实现数据传输,将手机与电脑用数据线连接。
2、在屏幕的下拉通知菜单中,找到USB已连接,然后就会切换到这个绿色的小机器人页面,点击下方的打开USB存储设备,等待小机器人变成黄色,摩托罗拉的手机这一步是选择大容量存储的。
3、这样手机跟电脑就是USB大容量存储了,我们就可以打开我的电脑。
4、就会看到有可移动磁盘了,双击打开。
5、进入DCIM文件夹。
6、打开Camera这个文件夹,进去就是我们手机拍的照片保存的文件夹了。
7、你可以选择你需要的照片,然后复制到电脑上就可以了。
8、第二种方法,是通过常用的手机助手软件将照片导出到电脑上的。
9、上面是我们已经连接好的手机助手软件,具体连接方面可以参考经验里的相关文件,点击左边的图片。
10、就会看到手机上拍的照片,然后选择照片。
11、点击导出,选择导入到电脑上的相关文件夹。
12、点击确定就可以了,手机上的照片就导入了电脑了。
13、第三种方法,比较简单,但需要将SD卡从手机上卸下来,然后将SD卡装到卡套上,再放到读卡器上,然后连接电脑,( 笔记本电脑 本身有读卡器的就不需要读卡器),按照第一种方法,打开我的电脑,在可移动磁盘里找到相关文件夹就可以复制照片到电脑上了。
注意事项
1、本经验比较适合三星安卓系统智能手机,内容基本一致的。其它安卓系统2.1以上的手机基本操作差不多,大家可以根据手机提示操作。
2、台式机电脑有可能会出现USB连接上以后手机只是充电模式,而没有数据模式,建议换台式机电脑后面的USB接口。
3、以上方法,建议大家在数据传输时使用第一种比较好,第二种主要是进行手机管理的,第三种方法,因为需要将SD卡从手机上卸下来,操作多了对手机和卡都不是很好的,但是这种方法的数据传输比较快,在使用容量比较大的内容时可以操作。
⑦ android如何批量上传大量图片急啊
lz,有没有解决?还望给出答案!
⑧ 换新的手机,都是Android系统,怎样把所有数据全部转移到新手机上
1、在手机(以魅族X8和E2手机为例) 桌面找到换机助手软件并点击。
7、耐心等待发送完成,旧手机数据就转移到新手机,数据转移完成。