|
本帖最后由 gzcyp2000 于 2016-4-4 11:50 编辑
如题
论坛查找到有个相关贴子如下,但他的情况可以用在Baas模型中的action解决,但我的要求好像不太好用action。
http://bbs.wex5.com/forum.php?mod=viewthread&tid=87163
具体场景:
其他就是上传图片文件到服务器,原来在V3.2.1中使用cordova.file-transfer插件,执行下面代码来进行上传:
JS:
var options = new FileUploadOptions();
。。。
var url = encodeURI("http://192.168.3.12:8080/fileTransfer?action=upLoadImage&savepath=xxxxx"); //调用命名为upLoadImage的servlet
ft.upload(imageURI, url, success, fail, options); //执行上传保存
JAVA:
public class UploadImageServlet extends HttpServlet {
private static final long serialVersionUID = 1444388478431748082L;
public void service(HttpServletRequest request, HttpServletResponse response) throws IOException {
String action = request.getParameter("action");
if("upLoadImage".equals(action)){
upLoadImage(request, response);
}
}
private void upLoadImage(HttpServletRequest request, HttpServletResponse response) throws IOException {
File file1 = null; //设置保存路径
String needExt = request.getParameter("needext"); //是否需要扩展名, 传参值可选项:false / true
String savePath = request.getParameter("savepath");
//检测指定路径是否存在,如不存在则创建指定目录
File dir = new File(savePath);
if(!(dir.exists() && dir.isDirectory())){
dir.mkdirs();
};
DiskFileUpload disFileUpload = new DiskFileUpload();
try {
List<FileItem> list = disFileUpload.parseRequest(request);
for (FileItem fileItem : list) {
if (fileItem.isFormField()) {
// 处理普通表单域
System.out.println("B:"+fileItem.getFieldName() + ":" + fileItem.getString());
} else {
//将临时文件保存到指定目录
if ("fileAddPic".equals(fileItem.getFieldName())) {
File remoteFile = new File(new String(fileItem.getName().getBytes(), "UTF-8"));
String fileName = fileItem.getName();
//如果无扩展名,则根据需要添加上.jpg
System.out.println("needExt:"+needExt);
if (fileName.indexOf(".") < 0){
if (needExt == null){
fileName = fileName + ".jpg";
} else
if (needExt.equals("true")){
fileName = fileName + ".jpg";
}
}
file1 = new File(savePath + fileName); // 写入的位置
InputStream ins = fileItem.getInputStream();
OutputStream ous = new FileOutputStream(file1);
try {
byte[] buffer = new byte[1024];
int len = 0;
while ((len = ins.read(buffer)) > -1) {
ous.write(buffer, 0, len);
}
} finally {
ous.close();
ins.close();
}
}
}
}
} catch (FileUploadException e) {
e.printStackTrace();
}
}
}
在V3.2.1中拍照和上传到指定路径的功能均能实现。
升级到V3.3后,按之前的方法创建了servlet的java文件,配置了web.xml文件,但就是怎么编辑和配置都有问题,也调用不到servlet,
Baas中的结构和web.xml如下图,搞不清楚3.3要如何创建和配置servlet!!!
如果使用Baas模型中的action来处理java上传图片,与原servlet对应的参数如何处理,action的java和参数该如何写啊???
求教!!!
|
-
|