上传图片到到本地图片服务器操作方式
首先搭建一个本地的工程,可以进行web静态资源的访问:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>ecps-image</artifactId>
<packaging>war</packaging>
<parent>
<groupId>com.rl.ecps</groupId>
<artifactId>ecps</artifactId>
<version>0.0.1-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
</project>
搭建完成之后能够测试访问到静态资源即可,本地图片服务器搭建成功之后,在项目中进行上传图片到图片服务器操作:
使用的是jersey一个整合包,可以完成两台服务器之间的文件通信
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-client</artifactId>
<version>1.2</version>
</dependency>
/**
* 图片服务器的主机路径
*/
public static final String IMAGE_PATH = "http://localhost:8088/ecps-image";
上传代码:
/**
* 如果是ajax来访问返回值void
* @throws Exception
*
* 常犯2个错误
* 1.忘记修改图片服务器的只读属性,如果没改报403
* 2.上传图片的realPath不对,报409
*/
@RequestMapping("/uploadPic.do")
public void uploadPic(String fileName, HttpServletRequest request, PrintWriter out) throws Exception{
//强制转换request 转换成复杂类型
MultipartHttpServletRequest mr = (MultipartHttpServletRequest) request;
//通过指定的文件名获得指定文件名fileName的文件 页面的名字
MultipartFile mf = mr.getFile(fileName);
//获得文件的字节数组,用这个字节数组读取文件
byte[] bytes = mf.getBytes();
//定义时间戳作为文件名的一部分吗,为了文件名不重复定义时间戳为文件名
String tFileName = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date());
//定义 Random 随机对象,同样也是为了防止文件名的重复,将"时间戳+随机数"作为文件名
Random random = new Random();
//连续加三位 "时间戳和随机数"
for(int i = 0; i < 3; i++){
//世时间戳+随机数(是10以内的随机数)
tFileName = tFileName + random.nextInt(10);
}
//通过转换后的复杂类型的request获得文件的原始文件名,没有加时间戳的文件名
String oriFileName = mf.getOriginalFilename(); //在电脑硬盘的上的文件名
//获得原始文件的后缀名
String suffix = oriFileName.substring(oriFileName.lastIndexOf("."));
//图片的绝对路径
String realPath = EbConstants.IMAGE_PATH + "/upload/"+tFileName + suffix;
//相对路径
String relativePath = "/upload/"+tFileName + suffix;
//创建Jersey客户端
Client client = Client.create();
//指定web资源
WebResource wr = client.resource(realPath);
//上传图片
wr.put(String.class, bytes);
//{"realPath":realpath, "relativePath":relative};
//创建java里面的json对象
JSONObject jo = new JSONObject();
//在json对象中放入键值对
jo.accumulate("realPath", realPath); //类似于map中的put
jo.accumulate("relativePath", relativePath);
String result = jo.toString();
out.write(result);
}
需要在工程的的tomcat的web.xml中修改:
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
添加:
<init-param>
<param-name>readonly</param-name>
<param-value>false</param-value>
</init-param>
是设置服务器的只读属性为false,使用jersey就可以上传成功了.把文件的绝对路径通过WebResource上传到图片服务器上去
//图片的绝对路径
String realPath = EbConstants.IMAGE_PATH + "/upload/"+tFileName + suffix;
Client client = Client.create();
//指定web资源,
WebResource wr = client.resource(realPath);
防止上传到图片服务器的文件丢失,可以在图片服务器的路径里面随便建立一个文件
上传图片到到本地图片服务器操作方式相关推荐
- 简单的本地图片服务器的搭建
简单的本地图片服务器的搭建 第一步:安装部署 Nginx 下载 Nginx 下载完解压后 第二步: 搭建图片服务器 第一步:安装部署 Nginx 下载 Nginx 保存文件路径不要包含中文! Linu ...
- Nginx配置本地图片服务器
一.Nginx介绍 Nginx就是反向代理服务器. 首先我们先来看看什么是代理服务器,代理服务器一般是指局域网内部的机器通过代理服务发送请求到互联网上的服务器,代理服务器一般作用于客户端.比如GoAg ...
- asp 调用php上传图片,asp 版 本地图片上传问题!
真的很简单~ 就是两个 点点 的问题~:( 真当是 人不学不知义 啊~:) 为了让和我一样笨笨的人能节省些 宝贵的时间打麻将~:)我把 简单的代码贴出来~:) KE.show({ id : ...
- PHP上传图片到独立的图片服务器
上传图片或文件到不是程序部署目录的服务器时基本上有以下两种方式: 1.使用共享网络磁盘的形式,在当前的服务器简历一个另一台服务器的网络磁盘,直接操作读写这个网络磁盘即可 2.使用FTP操作另外这台服务 ...
- element 上传图片前获取本地图片地址
:on-change事件 handleChange(file, fileList) { console.log("file", URL.createObjectURL(file.r ...
- kindeditor扩展粘贴截图功能修改图片上传路径并通过webapi上传图片到图片服务器...
2019独角兽企业重金招聘Python工程师标准>>> kindeditor是一个非常好用的富文本编辑器,它的简单使用我就不再介绍了. 而kindeditor却对图片的处理不够理想. ...
- kindeditor java 上传图片_java中KindEditor本地图片上传与上传失败问题
此代码是最新版的 KindEditor 3.5.x 实现本地图片上传的方法,用于oschina即将改版的个人空间 KindEditor 要求的JSON格式如下: {"error": ...
- Java接收并上传图片至S3,返回图片URL,并删除本地图片
Java将图片上传至S3,一般前端页面上传过来的图片,在后端接收形式都为MultipartFile,而S3不支持MultipartFile形式的文件,只支持File类型,所以需要先转换类型再上传.注意 ...
- php上传图片代码编辑,simditor上传本地图片 php
网上有很多simditor这个编辑器的文档,但是大多是重复的,并且php做服务端的也很少.最近做了一个上传功能,研究了一下,跟大家分享一下. 首先 说一下逻辑,理解好了逻辑,才能更好的理解代码. 点击 ...
最新文章
- [转]WINDOWS服务器安全加固实战(WINDOWS SERVER 2008 R2和WINDOWS SERVER 2012)
- 「自然语言处理」如何快速理解?有这篇文章就够了!
- 海生《我不是你的玩偶》关注颇高
- 并发编程-11线程安全策略之线程封闭
- 光纤光缆市场需求高于预期 我国将迎来流量经济
- 11 linux suse 本地源_suse 11 Linux 静态路由的添加方法
- php检测数组类型,javascript中通过哪些方法来检测数组类型?
- SaltStack 第二板块安装说明 [2]
- (转)对各种初始化函数的理解:OnInitDialog、InitInstance、InitApplication函数的理解...
- CentOS6和CentOS7进入单用户模式重置root密码
- 翻译: 4.3. 多层感知器的简明实现MLP pytorch
- 土豆英雄抽传说卡程序(非土豆英雄玩家不要看)
- 免费网页版PS,太好用了
- r720换固态硬盘后如何重装系统_联想解决R720在Raid模式下重装Win10系统无法识别固态硬盘的问题...
- 光滑曲线_微分几何笔记(4) —— 二维三维空间中曲线的曲率以及环绕数
- 安德斯.埃里克森 的研究
- 使用Selenium IDE进行自动化测试
- 【markdown】表格合并单元格
- python四舍五入round_Python四舍五入及round、Decimal使用
- 双硬盘好还是纯固态好学计算机专业,电脑双硬盘好还是纯固态好?