Helma中上传图片示例我在这里写了三个文件:
在运行文件时,要从
2开始运行
1、
imageUploadForm.hsp文件:
<FORM METHOD="POST" ACTION="imageUpload" ENCTYPE="multipart/form-data">
<INPUT TYPE="FILE" NAME="rawimage">& <INPUT TYPE="SUBMIT" VALUE="save">
</FORM>
2、
imageUpload.hac文件:
this.imageUploadForm();//加载一个页面,前端上传图片的页面
var rawimage = req.get("rawimage");//通过request获取上传文件的对象。是helma.util.MimePart类型
if (req.get("uploadError")) {//判断上传文件是否过大。第一次加载上传页面时是不会有此属性的。因此页面中没有设置
res.write("<H2>上传文件太大</H2>");
} else if (rawimage) {//如果有这个对象
if (rawimage.contentLength == 0) {
// 没有上载
res.write("<H2>没有上传任何东西</H2>");
} else {
var imgParams = new HopObject();
imgParams.name = "testbild";//设置图片名字
imgParams.saveTo = "D:/";//设置图片保存路径
imgParams.maxWidth = 800;//设置最大的宽度
imgParams.maxHeight = 600;//设置最大的高度
//将要上传的这个图片及参数传给保存方法,用此saveImg方法进行了上传
var result = this.saveImg(rawimage,imgParams);//结果中存放了我们设置的参数
// 判断上传过程是否有错
if (result.error) {
// 保存或调整图片出错时,输出错误信息
res.write("<H2>" + result.errorMsg + "</H2>");
} else {
//文件上传成功,我们查看结果
for (var i in result)
res.write(i + ": " + result[i] + "<BR>");
}
}
}
3、
function.js文件,主要使用这个文件中的saveImage()函数:
function saveImg(rawimage,imgParams) {//保存图片的函数
if (rawimage && (!rawimage.contentType ||rawimage.contentType.indexOf("image/") < 0)) {//如果上传文件的类型不为image类型
//用户不能上传,因为不是图片文件
imgParams.error = true;
imgParams.errorMsg = "上传不是图片";
} else {
//判断图片的文件类型 (通过检查mimetype也可以做到这一点)
imgParams.type =rawimage.name.substring(rawimage.name.lastIndexOf(".") + 1);//取得文件后缀名
var img = new Image(rawimage.getContent());//获取图片文件
//检查是否对图片进行必要的调整
if (imgParams.maxWidth && imgParams.maxHeight && img.width >imgParams.maxWidth && img.height > imgParams.maxHeight) {//如果图片大于设置的最大高度和宽度
var hfact = imgParams.maxWidth / img.width;//宽度
var vfact = imgParams.maxHeight / img.height;//高度
imgParams.width = Math.round(img.width * (hfact < vfact ? hfact :vfact));
imgParams.height = Math.round(img.height * (hfact < vfact ? hfact :vfact));
var doResize = true;
} else if (imgParams.maxWidth && img.width > imgParams.maxWidth) {//只有宽度大,就只调整宽度
var fact = imgParams.maxWidth / img.width;
imgParams.width = imgParams.maxWidth;
imgParams.height = Math.round(img.height * fact);
var doResize = true;
} else if (imgParams.maxHeight && img.height > imgParams.maxHeight) {//只有高度大,就只调高度
var fact = imgParams.maxHeight / img.height;
imgParams.height = imgParams.maxHeight;
imgParams.width = Math.round(img.width * fact);
var doResize = true;
}
if (doResize) {
img.resize(imgParams.width,imgParams.height);//重新设置图片的大小
if (rawimage.contentType == 'image/gif') {//对JIF文件动画文件进行设置
img.reduceColors(256);
}
}
img.saveAs(imgParams.saveTo + imgParams.name + "." + imgParams.type);//保存图片
}
return (imgParams);//将图片存储信息返回
}
分享到:
相关推荐
NULL 博文链接:https://chengj.iteye.com/blog/592344
Helma是一个Web应用程序框架。 它提供了对各种脚本引擎的支持,但是Rhino JS脚本引擎插件仍然是唯一的捆绑插件。 该项目提供了一个PHP插件,允许PHP开发人员使用Helma Web应用程序
Antville 是用服务器端 JavaScript 编写的,并使用 Helma Object Publisher 开发。Antville 在后端使用关系数据库。 要运行 Antville,您需要 Helma Object Publisher 和关系数据库软件。我们用 PostgreSQL 和 MySQL...
Jala 是 Helma Object Publisher 的开源 JavaScript 模块集合。 版权所有 2004 ORF Online und Teletext GmbH,维也纳(奥地利)。 您可以在位于docs目录的 API 文档中找到有关每个模块的更多信息。 许可 Jala 本身...
Antville用服务器端JavaScript编写,并由Helma Object Publisher开发。 Antville在后端使用关系数据库。地位Antville的代码库质量稳定,可以进行生产部署。 试用进行演示。 Antville的源代码中仍然可能隐藏着错误。...
Antville 完全用 JavaScript(准确地说是 ECMAScript)编写,并基于 Helma Object Publisher,这是一个强大且快速的可编写脚本的开源 Web 应用程序服务器(它本身是用 Java 编写的)。 Antville 在后端使用关系...
:helicopter: (发音helicam )天生深奥的小混凝土绝对机 :wrench: :wrench: :sheaf_of_rice: :sheaf_of_rice: HELMA-天国神秘主义极简主义自动机和HAMAMAL-液压实际极简主义自动机械语言或HAMALAM-自动机的...
warpFX是Flex:trade_mark:的数据抽象库,可在Flex:trade_mark:与支持某些已定义远程方法的任何AMF3兼容服务器之间提供透明数据服务。 warpFX附带了用于Helma的服务器端远程方法和AMF3实现。