`
han2000lei
  • 浏览: 276807 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

helma上传图片示例

阅读更多
Helma中上传图片示例我在这里写了三个文件:
    在运行文件时,要从2开始运行
1imageUploadForm.hsp文件:
<FORM METHOD="POST" ACTION="imageUpload" ENCTYPE="multipart/form-data">
	<INPUT TYPE="FILE" NAME="rawimage">& <INPUT TYPE="SUBMIT" VALUE="save">
</FORM>

2imageUpload.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>");
  }
 }
}

3function.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);//将图片存储信息返回
}

2
1
分享到:
评论

相关推荐

    mongodb + helma 实现web快速开发

    7. **Helma框架**:了解Helma的路由、中间件、模板引擎和模块系统是高效开发的关键。例如,Helma的路由机制允许你定义URL映射到特定的处理函数,而模板引擎可以帮助你快速生成动态HTML。 8. **错误处理与日志记录**...

    PHP Scripting Engine Plugin for Helma-开源

    Helma是一个Web应用程序框架。 它提供了对各种脚本引擎的支持,但是Rhino JS脚本引擎插件仍然是唯一的捆绑插件。 该项目提供了一个PHP插件,允许PHP开发人员使用Helma Web应用程序

    Antville提供高性能、功能丰富的博客托管软件

    Antville 是用服务器端 JavaScript 编写的,并使用 Helma Object Publisher 开发。Antville 在后端使用关系数据库。 要运行 Antville,您需要 Helma Object Publisher 和关系数据库软件。我们用 PostgreSQL 和 MySQL...

    nodejs快速入门

    - **先驱者们**:早在Node.js出现之前,已有其他几种尝试将JavaScript应用到服务器端的技术,比如Aptana Jaxer(基于SpiderMonkey)、Helma(基于Rhino)。这些尝试为Node.js的发展奠定了基础。 - **早期挑战**:...

    jala:ORF.at 的 Jala SVN 存储库的分支——现在是 antvillehelma 的一部分

    Jala 是 Helma Object Publisher 的开源 JavaScript 模块集合。 版权所有 2004 ORF Online und Teletext GmbH,维也纳(奥地利)。 您可以在位于docs目录的 API 文档中找到有关每个模块的更多信息。 许可 Jala 本身...

    antville:Weblog托管系统的皇后号–自2001年以来用服务器端JavaScript编写

    Antville用服务器端JavaScript编写,并由Helma Object Publisher开发。 Antville在后端使用关系数据库。地位Antville的代码库质量稳定,可以进行生产部署。 试用进行演示。 Antville的源代码中仍然可能隐藏着错误。...

    nodeJS.pdf

    - **先驱**:在Node.js之前,有一些类似的尝试,如Aptana Jaxer和Helma,它们为Node.js的发展奠定了基础。 ##### 二、Node.js 的核心思想 - **非阻塞 I/O**:这是Node.js最显著的特点之一,它使得Node.js能够处理...

    antville:更新你的克隆——这个 repo 被替换了

    Antville 完全用 JavaScript(准确地说是 ECMAScript)编写,并基于 Helma Object Publisher,这是一个强大且快速的可编写脚本的开源 Web 应用程序服务器(它本身是用 Java 编写的)。 Antville 在后端使用关系...

    helvm.github.io::sun:HELVM-在HaskellEta中实现的天堂般的神秘(Vegan Metro)虚拟机

    :helicopter: (发音helicam )天生深奥的小混凝土绝对机 ‍:wrench: :wrench: ‍:sheaf_of_rice: :sheaf_of_rice: HELMA-天国神秘主义极简主义自动机和HAMAMAL-液压实际极简主义自动机械语言或HAMALAM-自动机的...

    twoday-开源

    对于"HelmaTwoday"这个压缩包子文件的名称,我们可以推测它可能是Twoday项目的一部分,或者是一个基于Helma框架实现的Twoday版本。Helma是一种JavaScript服务器环境,用于构建动态Web应用,它支持数据库访问、模板...

    warpFX-开源

    warpFX是Flex:trade_mark:的数据抽象库,可在Flex:trade_mark:与支持某些已定义远程方法的任何AMF3兼容服务器之间提供透明数据服务。 warpFX附带了用于Helma的服务器端远程方法和AMF3实现。

Global site tag (gtag.js) - Google Analytics