`

使用uploadify控件上传并预览图片

 
阅读更多

*****************************介绍************************************************

该功能实现是在ssm框架下(spring、springMVC、mybatis)

 

 

前台代码:

jsp:---------------------------------

//1、图片预览容器

<div id="pic_view_div" style="width:108px; height:150px"> 
     <img src="" width="108" height="150" id="pic_view"> 
</div>

//2、上传按钮,其中的id为控件所需

<div style="margin-left: 100px;">
     <input type="file" name="uploadify" id="uploadify" align="center"/>
</div>

//3、上传进度显示区域

<td colspan="2" rowspan="3" align="center" valign="center">
      <div id="fileQueue" style="width:200px;"></div>
</td>

js----------------------------------------------------------------

$(document).ready(function(){

       //初始化控件

       initUpload();

       var picUrl = $("#picUrl").val();
       if(picUrl !=''){
                $("#pic_view").attr("src",ctx+"/"+picUrl);
        }else{
                $("#pic_view").attr("src",ctx+"/core/resources/images/defaultPerson.png");
        }

});//end ready

function initUpload(){
    var personId = $("#id").val();
    var year = $("#year").val();
    var uploadifyHome = ctx + '/core/resources/scripts/lib/uploadify';
    var uploadUrl = ctx + '/application/socialSecurity/medicalPerson/doPictureCreate.do?sessionId=' + sessionId;
    $("#uploadify").uploadify({
        'swf': uploadifyHome + '/uploadify.swf', //指定上传控件的主体文件
        'uploader'       : uploadUrl, //指定服务器端上传处理文件
        'cancelImg': uploadifyHome + '/uploadify-cancel.png',
        'queueID'        : 'fileQueue',
        'formData':{'personId':personId,'year':year},
        'auto'           : true,  
        'buttonText'     : '上传图片', 
        'multi'          : false,  //设置为true将允许多文件上传。
        'buttonCursor'   : 'pointer', 
        'fileObjName'    : 'file', 
        'fileTypeDesc': '图片文件',
        'height'         : '25',
        'rollover': false,
        'queueSizeLimit': 1, //队列中允许的最大文件数目
        'fileTypeDesc'   : '支持格式:jpg/gif/jpeg/png/bmp.',   
        'fileTypeExts': '*.jpg;*.gif;*.jpeg;*.png;*.bmp',//允许的格式 
        'progressData'   : 'all',
        //'debug'    : true,
        'onUploadStart': function (file) {
            //alert(file.id);
         },
         'onQueueComplete': function (queueData) {
             //layer.alert('上传成功:' + queueData.uploadsSuccessful + ' 文件,失败:' +                             queueData.uploadsErrored + '个文件。');
         },
         //检测FLASH失败调用
         'onFallback': function () {
             layer.alert("您未安装FLASH控件,无法上传文件!请安装FLASH控件后再试。");
         },
         'onUploadSuccess'  : function(file,data,response) {
             //console.log(data);
            var dataStr = JSON.parse(data);
            //设置图片预览 
            var exNameVal = dataStr.extraCode;
            $("#picUrl").val(exNameVal);
            $("#pic_view").attr("src",ctx+"/"+exNameVal);
        } 
    });
}

//controller------------------------------------------------------------------

  /**
   * 上传相片
   * 上传成功返回相片保存路径
   * @param foreignData
   * @param file 相片文件
   * @return
   */
  @RequestMapping("doPictureCreate")
  @ResponseBody
  public String doPictureCreate(@RequestParam("personId") String personId,
      @RequestParam("year") String year, @RequestAttribute("file") MultipartFile file) {
    response.setContentType("application/json");
    response.setCharacterEncoding("UTF-8");
    CommandResult result = new CommandResult();
    OperationLog operInfo = createOperationLog(request, BuzType.MEDICAL_PERSON,
        BuzDataDefinition.MEDICAL_PERSON, OperationType.ATT_CREATE);
    if (!CommonUtil.ifFilePicture(file.getOriginalFilename())) {
      result.setCode("fail");
      result.setMessage("相片保存失败:图片格式错误");
      return JacksonUtil.doJackson(result);
    }
    File dir = new File(request.getServletContext().getRealPath(Constants.ATT_PATH));
    if (!dir.exists()) {
      dir.mkdir();
    } else if (dir.isFile()) {
      result.setCode("fail");
      result.setMessage("相片保存失败:保存路径错误," + dir.getAbsolutePath());
      return JacksonUtil.doJackson(result);
    }
    dir = new File(request.getServletContext().getRealPath(Constants.ATT_PATH + "/medicPerson"));
    if (!dir.exists()) {
      dir.mkdir();
    } else if (dir.isFile()) {
      result.setCode("fail");
      result.setMessage("相片保存失败:保存路径错误," + dir.getAbsolutePath());
      return JacksonUtil.doJackson(result);
    }
    String fileName = personId + "_" + year + "_" + operInfo.getOperationTime().getTime();
    File saveFile = new File(dir.getAbsolutePath() + "/" + fileName);
    if (saveFile.exists()) {
      result.setCode("fail");
      result.setMessage("相片保存失败:同名文件已经存在");
      return JacksonUtil.doJackson(result);
    }

    try {
      // create file
      file.transferTo(saveFile);
      result.setCode("success");
      // 返回相片url,客户端在保存人员信息时(doBuzDataUpdate)将该路径传回服务端MedicalPerson.picUrl
      result.setExtraCode(Constants.ATT_PATH + "/medicPerson/" + fileName);
      result.setMessage("相片保存成功");
    } catch (Exception e) {
      if (saveFile.exists()) {
        saveFile.delete();
      }
      result.setCode("fail");
      result.setMessage("相片保存失败:" + e.getMessage());
    }
    return JacksonUtil.doJackson(result);
  }

 

//--------------------------------------------注意------------------------------------------

如果页面有滚动动条,可能遇到下面两个问题

1、上传图片的按钮会发生垂直错位

这里的错位是指:鼠标放到上传按钮上发现没有变成小手(pointer),且点击按钮后没有文件预览弹出窗口,这些问题在开发人员模式下(F12)会看的很明白。

 

这个问题可以打开你uploadify.css,改成如下:即可

.uploadify {
    position: relative;
    vertical-align: bottom;
    /* margin-bottom: 1em; */
}

 

 

2、上传按钮发生水平错位.解决方法如下

 

<td colspan="2" align="center">
      <table>
               <tr>
                   <td>
                         <input type="file" name="uploadify" id="uploadify" align="center"/>
                   </td>
               </tr>
       </table>
</td>

 

 

 

 

  • 大小: 38.7 KB
  • 大小: 62.6 KB
  • 大小: 50.7 KB
分享到:
评论

相关推荐

    C# 使用uploadify实现图片批量上传

    具体代码实现因项目需求和框架而异,但核心思路是使用uploadify的`upload`事件触发上传,服务器端处理文件并返回结果。 通过以上步骤,你可以利用C#和uploadify实现一个高效、安全的图片批量上传功能。理解并掌握...

    上传控件由uploadify迁移至fineuploader

    本篇文章将详细讨论从`Uploadify`迁移到`Fine Uploader`这一过程中的相关知识点,以及这两个上传控件的主要特点。 `Uploadify`是一款曾经非常流行的JavaScript文件上传插件,它利用Flash技术实现异步多文件上传,并...

    uploadify H5版(uploadifive)基于html5的手机上传图片插件

    【标题】"uploadify H5版(uploadifive)基于html5的手机上传图片插件"涉及的关键技术点包括HTML5、Uploadify、uploadifive和.NET后端处理。Uploadify是一个JavaScript上传组件,而其H5版本uploadifive则是针对现代...

    无刷新上传控件Uploadify

    用户在选择文件后,无需等待页面刷新即可查看上传进度和预览图片,提高了网页交互的流畅性。这款控件在网页应用中广泛使用,尤其对于那些需要频繁进行文件上传的场景,如社交媒体、在线文档编辑平台等,能够显著提升...

    uploadify多图上传实例

    Uploadify是一款基于jQuery的文件上传插件,它允许用户批量上传文件,特别是图片,提供了一种用户友好的交互体验。在本文中,我们将深入探讨如何在ASP.NET环境中实现一个基于Uploadify的多图上传实例。 【描述】:...

    uploadify图片批量上传

    这款控件以其简洁的界面和强大的功能深受开发者喜爱,尤其在需要处理大量图片上传的场景中,Uploadify能显著提高用户体验。 Uploadify的工作原理基于AJAX和Flash技术,它允许用户在不刷新页面的情况下实现文件的...

    jquery上传图片控件

    总结,jQuery Uploadify作为一个成熟的图片上传控件,提供了丰富的功能和高度的自定义性,使得开发者能够轻松地实现图片上传功能。然而,随着技术的发展,开发者也需要关注新的上传解决方案,以适应不断变化的Web...

    基于PHP的多文件上传控件uploadify火韦修改版源码.zip

    【标题】"基于PHP的多文件上传控件uploadify火韦修改版源码"涉及到的是在Web开发中使用PHP和JavaScript实现的一种批量文件上传功能。Uploadify是一款流行的前端文件上传插件,它允许用户通过直观的用户界面选择并...

    jquery uploadify 无刷新上传精简版

    在上述代码中,我们指定了上传文件的SWF对象路径、服务器端处理脚本、取消按钮的图片、自动上传设置等关键参数。同时,还可以定义一系列回调函数,如`onSelectOnce`用于在选择文件后执行的逻辑,`onUploadSuccess`则...

    多张图片上传的例子,MVC项目

    在本文中,我们将深入探讨如何在ASP.NET MVC项目中实现多张图片的上传功能,同时利用uploadify控件创建缩略图。这个功能对于许多Web应用程序来说是至关重要的,特别是那些涉及用户上传个人资料图片、产品照片或者...

    ASP.NET多文件上传控件Uploadify的使用方法

    本文将详细讲解如何使用Uploadify控件实现多文件的上传。控件利用了JavaScript与***后端技术,前端通过Flash实现文件的上传,后端通过ASHX处理文件上传请求。 在具体实现上,Uploadify使用了轮训的方式调用后台...

    UPLOADIFY v3.1 基于jquery的上传插件.zip

    在实际项目中,例如一个图片分享社区,可以利用UPLOADIFY实现用户快速上传图片,同时结合后端验证和处理,确保上传的安全性和有效性。通过设置限制文件类型、大小,以及自定义上传成功后的回调,可以实现完整的上传...

    webuploader等上传控件

    4. **Bootstrap FileInput**:基于流行的Bootstrap框架构建,Bootstrap FileInput是一款美观的文件上传控件,它集成了图片预览、拖拽上传等功能,易于与Bootstrap主题整合,提升网页界面的美观度。 5. **jQuery ...

    第三方控件

    2. **预览功能**:在上传前让用户预览图片,确保上传的图片符合预期。 3. **格式检查**:自动检查图片文件格式,避免无效或不安全的文件类型上传。 4. **进度条显示**:显示上传进度,让用户了解图片上传的状态。 5....

    jquery_uploadify实现的下载进度条

    2. **初始化Uploadify**:在需要显示上传控件的地方,使用JavaScript初始化Uploadify。设置参数如`queueID`(队列的ID)、`uploader`(服务器端处理脚本)、`fileExt`(允许的文件扩展名)、`fileSizeLimit`(文件...

    图片上传插件jquery.uploadify详解

    `jQuery.uploadify` 是一款基于 jQuery 的图片上传插件,它提供了一种用户友好的方式来上传图片。在本文中,我们将深入解析 `jQuery.uploadify` 的使用方法、配置选项以及注意事项。 首先,我们来看看核心的 ...

    jquery插件uploadify多图上传功能实现代码

    最后,通过学习本篇教程并实践相关的代码,我们不仅能够掌握如何使用jquery插件uploadify来实现多图上传,还可以学习到文件上传机制、JavaScript中事件处理和动态内容创建等知识点。这些技能对于进行Web开发是非常有...

    多图片多文件上传

    在现代Web应用中,用户经常需要上传图片和文件,例如在社交媒体、电商平台或者文档共享平台。"多图片多文件上传"是一项重要的功能,它允许用户一次性上传多个图像或文档,提高了交互性和效率。本篇文章将深入探讨...

    图片截取上传

    这里我们主要探讨如何使用JQUERY控件来实现图片的页面裁剪功能,以及相关的上传技术。 首先,`JQUERY` 是一个流行的JavaScript库,它简化了DOM操作、事件处理和动画效果,使得前端开发更加高效。在图片裁剪场景下,...

Global site tag (gtag.js) - Google Analytics