android两个java文件内容_java – 在1个请求中将多个文件从Android上传...
我知道我可以使用multipart / form POST请求一次将1个文件上传到AppEngine. AppEngine也支持uploading multiple files,但你必须做一些运行的JSP东西才能工作.
我有一个应用程序,要求我上传一些表单数据,2个图像和3个文本字段.这可以通过AppEngine完成吗?我一直在努力寻找有关这方面的信息,但这很难解决我需要的灵活性.我将把数据存储在blob存储/数据存储中.
我需要一个Java解决方案.
这是我的POST方法的签名:
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
public void post(
@Context HttpServletRequest request,
@Context HttpServletResponse response)
throws FileUploadException, IOException {}
如果确实需要,可以复制和粘贴Java Servlet.以上是问题和相关的servlet片段.
import java.io.BufferedReader;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.channels.Channels;
import java.util.Iterator;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import org.apache.commons.fileupload.FileItemHeaders;
import org.apache.commons.fileupload.FileItemIterator;
import org.apache.commons.fileupload.FileItemStream;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import com.google.appengine.api.blobstore.BlobstoreService;
import com.google.appengine.api.blobstore.BlobstoreServiceFactory;
import com.google.appengine.api.files.AppEngineFile;
import com.google.appengine.api.files.FileReadChannel;
import com.google.appengine.api.files.FileService;
import com.google.appengine.api.files.FileServiceFactory;
import com.google.appengine.api.files.FileWriteChannel;
@Path("/upload")
public class FileUploadServlet {
private BlobstoreService blobstoreService = BlobstoreServiceFactory
.getBlobstoreService();
@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
public void post(@Context HttpServletRequest request,
@Context HttpServletResponse response) throws FileUploadException,
IOException {
final ServletFileUpload upload = new ServletFileUpload();
final FileItemIterator fileIter = upload.getItemIterator(request);
while (fileIter.hasNext()) {
final FileItemStream item = fileIter.next();
String name = item.getName();
String fieldName = item.getFieldName();
String contentType = item.getContentType();
Log.d("Name = " + name);
Log.d("Field-Name = " + fieldName);
Log.d("Content-Type = " + contentType);
FileItemHeaders headers = item.getHeaders();
if(headers != null) {
Iterator it = (Iterator)headers.getHeaderNames();
while(it.hasNext()) {
String h = it.next();
Log.d(h + " = " + headers.getHeader(h));
}
}
if (item.isFormField()) {
// Nothing
} else {
RawImageData data = new RawImageData();
data.load(item.openStream());
// RawImageData reads the stream and stores it into a large byte[] called data.imageData
ByteBuffer bb = ByteBuffer.wrap(data.imageData);
FileService fs = FileServiceFactory.getFileService();
AppEngineFile file = fs.createNewBlobFile(contentType);
FileWriteChannel write = fs.openWriteChannel(file, true);
write.write(bb);
write.closeFinally();
String path = file.getFullPath();
Log.d(path);
// Later, read from the file using the file API
boolean lock = false; // Let other people read at the same time
FileReadChannel readChannel = fs.openReadChannel(file,
false);
// CRASHES WITH java.nio.charset.IllegalCharsetNameException: image/jpeg
// contentType = "image/jpeg"
// Again, different standard Java ways of reading from the
// channel.
BufferedReader reader = new BufferedReader(Channels.newReader(readChannel, contentType));
readChannel.close();
}
}
response.setContentType("text/html");
response.getOutputStream().write("success".getBytes());
}
}
完全例外:
WARNING: /api/upload
java.nio.charset.IllegalCharsetNameException: image/jpeg
at java.nio.charset.Charset.checkName(Charset.java:284)
at java.nio.charset.Charset.lookup2(Charset.java:458)
at java.nio.charset.Charset.lookup(Charset.java:437)
at java.nio.charset.Charset.forName(Charset.java:502)
at java.nio.channels.Channels.newReader(Channels.java:381)
at com.futonredemption.starstarstar.FileUploadServlet.post(FileUploadServlet.java:96)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
blah blah blah
android两个java文件内容_java – 在1个请求中将多个文件从Android上传...相关推荐
- java 按行读取大文件文件内容_Java实现按行读取大文件
Java实现按行读取大文件 String file = "F:" + File.separator + "a.txt"; FileInputStream fis ...
- java 读取大文件内容_java读取大文件
java一般读取文件时,将文件文内容全部加在到内存,然后读取,但是这种读取方式很明显不适合读取大文件,在进行大文件处理时,考虑到内存有限,采用分次读取的方式. java分次读取文件内容有三种方式, 1 ...
- Linux 文件管理-文件内容-读取工具-【cattac】连接多个文件并打印到标准输出
cat === 连接多个文件并打印到标准输出. 概要 cat [OPTION]... [FILE]... 主要用途 显示文件内容,如果没有文件或文件为-则读取标准输入. 将多个文件的内容进行连接并打印 ...
- word表格导出html代码,(网页源代码中的表格数据怎么导出excel)如何将把从WORD、EXCEL中复制的内容转换成HTML源代码,再通过网页表单提交上传到数据库?...
如何将ASP页面中的表格生成一个Excel表,求源码 '给你个例子吧.保存为 asp文件看看.具体就在第一句. New Page 1PJ计画 第版 案件No 案件名 主门 顾客 PJ责任者 営业担当 ...
- java 监听文件内容_java 监听文件内容变化
有时候,我们需要确定某些文件是否有变化而做出一些对应的动作,例如,曾经开发的一款服务器中,由于模块比较多,在运行期间有时候需要单独的输出某个模块日志,但又不可能总是开着日志. log4j中已经实现了可 ...
- java ftp读取文件内容_java读取ftp中TXT文件的案例
最近在开发关于java读取ftp中TXT文件,其中有些坑踩了一下,再次做个记录 1.读取文件时我会根据文件名称去生成数据库表,oracle数据库对于表名的长度是有限制的,最多30个字符 2.对于多个文 ...
- java 解析sh文件内容_java 文件读取
show me she shell 这是一道tomato师傅出的不完整的java题,java-,java-我恨java┑( ̄Д  ̄)┍ 这是一个题目一是列目录+任意文件读取, 二是垂直越权+CLRF配 ...
- java读取json文件内容_java读取json文件内容详解
之前给大家介绍了一下java读取txt文件内容,下面要给大家介绍的就是java读取json文件内容,一起来了解一下吧. 1.java读取json文件 下面是具体的思路: 首先是获取文件-获取文件内容- ...
- java读取修改文件内容_Java对本地文件内容读取、修改、删除的操作
import org.apache.commons.lang.StringUtils; import java.io.*; import java.util.HashMap; import java. ...
最新文章
- Squid的refresh_pattern配置
- 麻省理工学院开放 2018 自动驾驶课程
- 宠粉福利,100G网盘最新架构技术资料合集限时领
- 数据结构:最大子序列和
- Python 【第八章】:JavaScript 、Dom、jQuery
- netty检测系统工具PlatformDependent
- vue 页面A转到页面B,B页面停留在A页面的滚动位置
- Acwing第 33 场周赛【完结】
- QtGraphicView添加图元
- 更优雅的在 Xunit 中使用依赖注入
- PHP项目中,记录错误日志
- angularjs 元素重复指定次数_[LeetCode] 442. 数组中重复的数据
- Java数组数字排列
- cocos之观察者模式应用实例
- 成员变量与局部变量的区别
- 【项目】ARX程序开发:框裁直线(Rect Trim Line)功能开发
- python的wget用法介绍_Python使用wget实现下载网络文件功能示例
- 送起来oracle,十一,送你 51 个 Oracle 常用语句~
- 能力风暴机器人编程 | 详解使用能力风暴机器人以及配套VJC 4.3 CH做一个物联网——智慧物流项目
- 威漫哨兵机器人_漫威:哨兵机器人天下无敌?这几位变种人就不把他们放在眼里...
热门文章
- java自定义线程池池,线程池使用及自定义线程池
- 超清世界地图可放大_3D高清世界地图
- 湖南工业大学在线计算机作业答案,湖南工业大学《计算机组成原理》试题集,共7份,有部分答案...
- ruby宝石区块链最新消息_Ruby宝石| Ruby工具
- c++中std::find_std :: find()与C ++中的示例
- long类型20位示例_Java Long类numberOfTrailingZeros()方法及示例
- Java ObjectInputStream registerValidation()方法与示例
- Redis 管道技术——Pipeline
- 十五、Python操作mysql数据库
- html5 java 图片上传_java实现图片上传至服务器并显示,如何做?希望要具体的代码实现...