Servlet本地测试与远程部署
来源:互联网 发布:c和c 程序员面试秘笈 编辑:程序博客网 时间:2024/06/06 20:16
本例子用的服务器是阿里云多语言环境镜像
upload.html代码
<form action="****.*" method="post" enctype="multipart/form-data"> <input type="file" name="mFile"/> <input type="submit" value="提交"></form>
接着传输文件后servlet代码
private void savefile(HttpServletRequest request, HttpServletResponse response) throws IOException { request.setCharacterEncoding("utf-8"); DiskFileItemFactory factory = new DiskFileItemFactory();// 获得磁盘文件条目工厂 // 获取服务器下的工程文件中image文件夹的路径 String path = request.getSession().getServletContext().getRealPath("/") + "upload"; response.getWriter().write(path); /** * 如果没以下两行设置的话,上传大的 文件 会占用 很多内存, 设置暂时存放的 存储室 , 这个存储室,可以和 最终存储文件 的目录不同 原理 * 它是先存到 暂时存储室,然后在真正写到 对应目录的硬盘上, 按理来说 当上传一个文件时,其实是上传了两份,第一个是以 .tem 格式的 * 然后再将其真正写到 对应目录的硬盘上 */ factory.setRepository(new File(path)); // 设置 缓存的大小,当上传文件的容量超过该缓存时,直接放到 暂时存储室 factory.setSizeThreshold(1024 * 1024); // 高水平的API文件上传处理 ServletFileUpload upload = new ServletFileUpload(factory); try { // 可以上传多个文件 List<FileItem> list = (List<FileItem>) upload.parseRequest(request); for (FileItem item : list) { // 获取表单的属性名字 String name = item.getFieldName(); // 如果获取的 表单信息是普通的 文本 信息 if (item.isFormField()) { // 获取用户具体输入的字符串 ,名字起得挺好,因为表单提交过来的是 字符串类型的 String value = item.getString(); request.setAttribute(name, value); } // 对传入的非 简单的字符串进行处理 ,比如说二进制的 图片,电影这些 else { /** * 以下三步,主要获取 上传文件的名字 */ // 获取路径名 String value = item.getName(); // 索引到最后一个反斜杠 int start = value.lastIndexOf("/"); // 截取上传文件的 字符串名字,加1是去掉反斜杠 String filename = value.substring(start + 1); // 真正写到磁盘上 File file = new File(path,filename); item.write(file); } } } catch (FileUploadException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } }
android端的文件上传代码
选择了鸿神的Okhttp封装的代码(后期改为rxjava+retrofit(原生,先熟悉),当然,鸿神大大的也是杠杠的)
OkHttpUtils.post().addFile("img",“demo.jpg",new -File(uri)).url(url).build().execute();
addFile(key,filename,file)第一个参数是类似于上文html代码里 <input>
里面的name属性,filename就是文件名,file就是文件。
But,问题来了
当我本地测试通过的时候(未使用app),部署到服务器时,服务器没有任何反应,没有报错,没有网页错误,查看存入文件的文件夹也没有上传的图片。
然后在代码里面添加了response.getWriter().writ()
方法打印页面每一行代码放入了1.2.3.4顺序下来。
发现问题
每当服务器试图向数据盘中写入数据的时候顺序就断了
由此判断,服务器拒绝写入数据。
那我是这么上传代码的?简直是interesting
查询镜像文档后发现改虚拟机(可以创建虚拟机,详情点击查看)
后来根据文档改了权限 设定
chown -R www.www ./*
一切over,看到我的1.2.3.4 出来后 整个人都激动了。
好了,整理完了。
emmmmmm
确实没了
阅读全文
0 0
- Servlet本地测试与远程部署
- Maven远程部署和本地部署
- 本地与远程接口
- servlet编码与部署
- Webservice studio2.0, 本地测试与远程测试的奇怪问题
- 本地与远程linux上传下载
- 远程DMA与本地DMA
- Servlet与部署描述符
- Cobar部署与测试
- Cobar部署与测试
- Jenkins搭建与远程部署
- webservice远程测试显示"测试窗体只能用于来自本地...
- 利用maven插件cargo远程(本地)自动部署
- maven学习笔记4 构件部署到本地和远程
- Hive-2.1.1的本地模式和远程模式部署
- Maven 本地jar包部署到远程仓库
- maven使用cargo插件自动化(本地、远程)部署
- Redis集群部署与测试
- nlogn排序-归并排序
- iOS访问健康数据
- 7.网络编程
- Affinity Photo(图片处理软件)官方中文版V1.6.0.89下载 | affinity photo 破解版
- 深度学习与卷积神经网络--识别鸟
- Servlet本地测试与远程部署
- Affinity Designer(图片设计工具)官方中文版V1.6.0.89下载 | affinity designer windows破解版
- 【Linux】常见命令总结
- iOS创建自定义相册
- 列表生成式,列表生成器,迭代器
- Change your mood -- Tools(1)
- Material Design控件之NestedScrollView
- mysql关于账户的命令
- iOS获取麦克风权限