ueditor 怎么自定义上传文件的路径啊?求指导,,最好是有源码

ueditor 怎么自定义上传文件的路径啊?求指导,,最好是有源码,第1张

UEditor是由百度WEB前端研发部开发的所见即所得的开源富文本编辑器,具有轻量、可定制、用户体验优秀等特点。

开源基于BSD协议,所有源代码在协议允许范围内可自由修改和使用。

百度UEditor的推出,可以帮助不少网站开发者在开发富文本编辑器所遇到的难题,节约开发者因开发富文本编辑器所需要的大量时间,有效降低了企业的开发成本。

优点

1、体积小巧,性能优良,使用简单

2、分层架构,方便定制与扩展

3、满足不同层次用户需求,更加适合团队开发

4、丰富完善的中文文档

5、多个浏览器支持:Mozilla, MSIE, FireFox, Maxthon,Safari 和Chrome

6、更好的使用体验

7、拥有专业QA团队持续支持,已应用在百度各大产品线上

使用步骤

1.添加jar包 jar包位置:文件根目录下jsp的lib文件夹下,把jar包复制到web-inf下的lib文件夹下buildpath

2.修改config.js中的URL路径,修改为UEidtor插件在自己工程中的正确根路径

3.在jsp文件中先引入配置文件config.js然后再源码文件all.js(注意顺序)

4.加载容器和实例化容器

1.修改config.js配置文件URL为插件根目录,一般是绝对路径。

2.修改config.json中上传图片配置项中的访问路径前缀为项目名称,根据情况修改上传文件路径和访问路径。

配置正确之后UEditor有上传功能帮助我们上传图片。

但是上传路径会在项目部署的临时文件夹下。 tomcat取消部署后,上传文件就会和项目部署文件一起被删除

3.实现把图片上传到自定义路径  

在处理上传后的文件名称的时候注意不要出现中文  

要不然还需要做处理才能正确读取文件!

4.(1)首先在jsp中覆盖UEidtor获取路径的方法

//覆盖UEditor中获取路径的方法

UE.Editor.prototype._bkGetActionUrl = UE.Editor.prototype.getActionUrl

UE.Editor.prototype.getActionUrl = function(action) {

//判断路径 这里是config.json 中设置执行上传的action名称

if (action == 'uploadimage') {

return 'http://localhost:8080/maven-web/uploadImage.do'

} else if (action == 'uploadvideo') {

return ''

} else {

return this._bkGetActionUrl.call(this, action)

}

}

(2)首先在springmvc配置文件中配置

<!-- 上传配置 -->

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">

<property name="defaultEncoding" value="UTF-8"></property>

</bean>

在controller中定义上传和读取文件的方法

/**

* SpringMVC 用的是 的MultipartFile来进行文件上传

* 这里用@RequestParam()来指定上传文件为MultipartFile

* @throws IOException

*/

@RequestMapping("uploadImage")

@ResponseBody//这里upfile是config.json中图片提交的表单名称

public Map<String,String>uploadImage(@RequestParam("upfile") CommonsMultipartFile upfile,HttpServletRequest request) throws IOException{

//文件原名称

String fileName=upfile.getOriginalFilename()

//为了避免重复简单处理

String nowName=new Date().getTime()+"_" + fileName

if(!upimage.isEmpty()){

//上传位置路径

String path0 = "D:\\eclipseworkspace\\maven-web\\src\\main\\webapp\\upload\\"+nowName

//按照路径新建文件

File newFile = new File(path0)

//复制

FileCopyUtils.copy(upimage.getBytes(), newFile)

}

//返回结果信息(UEditor需要)

Map<String,String>map = new HashMap<String,String >()

//是否上传成功

map.put("state", "SUCCESS")

//现在文件名称

map.put("title", nowName)

//文件原名称

map.put("original", fileName)

//文件类型 .+后缀名

map.put("type", fileName.substring(upfile.getOriginalFilename().lastIndexOf(".")))

//文件路径

map.put("url", "/"+nowName+"/getImage.do")

//文件大小(字节数)

map.put("size", upfile.getSize()+"")

return map

}

/**

* 读取文件

*/

@RequestMapping("{imgName}/getImage")

public void readImg(@PathVariable("imgName") String imgName, HttpServletResponse response)

throws Exception {

//设置文件的返回类型

response.setContentType("image/*")

//文件路径(windows下是\\,linux下是//,都必须是绝对路径)

String imgPath="D:\\eclipseworkspace\\maven-web\\src\\main\\webapp\\upload\\"+imgName

//java中用File类来表示一个文件

File image = new File(imgPath)

//测试这个文件路径是否存在(也就是这个文件是否存在)

if (!image.exists()) {

return

}

//FileUtils.readFileToByteArray(File file)把一个文件转换成字节数组返回

response.getOutputStream().write(FileUtils.readFileToByteArray(image))

//java在使用流时,都会有一个缓冲区,按一种它认为比较高效的方法来发数据:

//把要发的数据先放到缓冲区,缓冲区放满以后再一次性发过去,而不是分开一次一次地发.

//而flush()表示强制将缓冲区中的数据发送出去,不必等到缓冲区满.

response.getOutputStream().flush()

response.getOutputStream().close()

}

通过 ”new FileInputStream(文件路径)“的形式进行上传即可。举例:

/**

* 加密文件

*

* @param fileName

* @param date

* @param plainFilePath 明文文件路径路径

* @param filepath

* @return

* @throws Exception

*/

public static String encodeAESFileUploadByFtp(String plainFilePath, String fileName, String date,String filepath) throws Exception {

FileInputStream fis = null

ByteArrayOutputStream bos = null

FTPClient ftpClient = new FTPClient()

String bl = "false"

try {

fis = new FileInputStream(plainFilePath)

bos = new ByteArrayOutputStream(fis.available())

byte[] buffer = new byte[1024]

int count = 0

while ((count = fis.read(buffer)) != -1) {

bos.write(buffer, 0, count)

}

bos.flush()

Log.info("加密上传文件开始")

byte[] bytes = encodeAES(key, bos.toByteArray())

ByteArrayInputStream is = new ByteArrayInputStream(bytes)

Log.info("连接远程上传服务器"+CMBCUtil.CMBCHOSTNAME+":"+2021)

ftpClient.connect(CMBCUtil.CMBCHOSTNAME, 2021)

ftpClient.login(CMBCUtil.CMBCLOGINNAME, CMBCUtil.CMBCLOGINPASSWORD)

//Log.info("连接远程上传服务器"+"192.168.54.106:"+2021)

//ftpClient.connect("192.168.54.106", 2021)

//ftpClient.login("hkrt-CMBCHK", "3OLJheziiKnkVcu7Sigz")

FTPFile[] fs

fs = ftpClient.listFiles()

for (FTPFile ff : fs) {

if (ff.getName().equals(filepath)) {

bl="true"

ftpClient.changeWorkingDirectory("/"+filepath+"")

ftpClient.makeDirectory(date)

ftpClient.changeWorkingDirectory("/"+filepath+"/" + date)

}

}

Log.info("检查文件路径是否存在:/"+filepath)

if("false".equals(bl)){

ViewUtil.dataSEErrorPerformedCommon( "查询文件路径不存在:"+"/"+filepath)

return bl

}

ftpClient.setBufferSize(1024)

ftpClient.setControlEncoding("GBK")

// 设置文件类型(二进制)

ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE)

ftpClient.storeFile(fileName, is)

Log.info("加密上传文件成功:"+fileName+"。文件保存路径:"+"/"+filepath+"/" + date)

return bl

} catch (Exception e) {

throw e

} finally {

if (fis != null) {

try {

fis.close()

} catch (Exception e) {

Log.info(e.getLocalizedMessage(), e)

}

}

if (bos != null) {

try {

bos.close()

} catch (Exception e) {

Log.info(e.getLocalizedMessage(), e)

}

}

}

}

上传保存 *** 作是在后台Java代码里处理的。

你在保存前使用Java代码在服务器上创建文件夹就好了啊。

File dir = new File("要创建的文件夹的位置")

dir.mkdirs()

你需要先获得工程当前路径,然后自己拼文件夹的位置就好了。如何获得当前工程的路径就和你是否使用了框架有关系了,一些框架提供了快捷获取。

比如最基本的Servlet获取:在servlet中获得项目路径


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8076587.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存