uploadify 图片上传

遇到的问题总结:

1.//图片排序

$("#pics").sortable();

2.//上传的文件对象名,与后台所传参数名保持一致,最初因为这个名称错误浪费了许久时间

fileObjName : "image", 

3.上传数量控制

提示消息需要到uploadify.js中修改, 修改后发现没有效果;

所以只能在保存的时候做一个判断;

//判断图片的数量
if($(".myimg").length >3){
$.DU_show("errorinfo", "red", "礼品图片最多只能设置3张图片,请删减后再保存!");
return ;
}

4.其它需要注意的问题,js的版本,对应的都修改成高版本的

<link href="${basepath}/static/scripts/plugins/uploadify/uploadify.css"
rel="stylesheet">
<link
href="${basepath}/static/css/themes/base/jquery.ui.all.css"
rel="stylesheet">
 
<script
src="${basepath}/static/scripts/plugins/jquery/jquery-ui-1.10.3.custom.min.js"></script>

<script
src="${basepath}/static/scripts/plugins/uploadify/jquery.uploadify.js"></script>

5.相关的代码:

  1 <!DOCTYPE html>
  2 <html>
  3 <head>
  4 <meta charset="utf-8">
  5 <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6 <title>礼品定义 - 添加表单</title> 
  7 <#include "/./common/headJs.html"/> 
  8 
  9 <link
 10     href="${basepath}/static/scripts/plugins/summernote/summernote.css"
 11     rel="stylesheet">
 12 <link
 13     href="${basepath}/static/scripts/plugins/summernote/summernote-bs3.css"
 14     rel="stylesheet">
 15     <link href="${basepath}/static/scripts/plugins/uploadify/uploadify.css"
 16     rel="stylesheet">
 17 <link
 18     href="${basepath}/static/css/themes/base/jquery.ui.all.css"
 19     rel="stylesheet">
 20 <#include "/./common/footJs.html"/>
 21 <script
 22     src="${basepath}/static/scripts/plugins/jquery/jquery-ui-1.10.3.custom.min.js"></script>  
 23 
 24 <script
 25     src="${basepath}/static/scripts/plugins/summernote/summernote.min.js"></script>
 26 <script
 27     src="${basepath}/static/scripts/plugins/summernote/summernote-zh-CN.js"></script>
 28 <script
 29     src="${basepath}/static/scripts/plugins/uploadify/jquery.uploadify.js"></script>
 30 <style>
 31 ul {
 32     list-style-type: none;
 33     margin: 0;
 34     width: 100%;
 35 }
 36 
 37 ul li {
 38     width: 120px;
 39     float: left;
 40 }
 41 
 42 ul li {
 43     list-style-type: none;
 44 }
 45 
 46 a:hover {
 47     text-decoration: none;
 48 }
 49 
 50 .col-xs-11 {
 51     padding: 0px !important;
 52 }
 53 
 54 .form-group {
 55     margin-bottom: 0px;
 56 }
 57 
 58 .form-control[readonly] {
 59     cursor: inherit;
 60     background-color: #fff;
 61 }
 62 
 63 .release-goods-title li:hover {
 64     cursor: pointer;
 65 }
 66 
 67 .release-menu-one {
 68     width: 482px !important;
 69 }
 70 
 71 .release-menu-one ul li {
 72     cursor: pointer;
 73 }
 74 
 75 .release-goods-btn input[disabled] {
 76     cursor: not-allowed;
 77     background-color: #7BA9D0;
 78     opacity: 1;
 79 }
 80 
 81 .col-xs-4 {
 82     padding: 0px !important;
 83 }
 84 
 85 .col-xs-2 {
 86     padding: 0px !important;
 87 }
 88 
 89 .col-xs-8 {
 90     padding: 0px !important;
 91 }
 92 
 93 .col-xs-9 {
 94     padding: 0px !important;
 95 }
 96 
 97 .label-text {
 98     padding-top: 8px;
 99 }
100 
101 .row {
102     margin-top: 20px;
103 }
104 
105 .radio-box {
106     line-height: 33px;
107 }
108 
109 #pics {
110     margin-top: 10px;
111     padding: 10px;
112     border: 1px solid #ccc;
113     height: 110px;
114 }
115 
116 .del {
117     position: absolute;
118     top: 0;
119     right: 0;
120     background-color: white;
121 }
122 
123 .preview, .del {
124     cursor: pointer;
125     text-indent: -99999px;
126     float: left;
127     margin-left: 20px
128 }
129 
130 #pics li {
131     float: left;
132     display: block;
133     width: 100px;
134     height: 80px;
135     padding: 2px;
136     border: 1px solid #ccc;
137     margin: 10px;
138 }
139 </style>
140 </head>
141 <body>
142     <div class="wrapper">
143         <!-- Main -->
144         <div class="sys-main">
145             <!-- Main Nav -->
146             <div class="sys-nav">
147                 <div class="minibtnd">
148                     <a id="sys-navMiniBtn" href="javascript:;"><i
149                         class="fa fa-bars"></i></a>
150                 </div>
151                 <ul class="nav navul" id="side-menu"></ul>
152             </div>
153             <script type="text/javascript">
154                 var currentURL = '';
155             </script>
156             <!-- ./Main Nav -->
157 
158             <!-- Main Block -->
159             <div class="sys-block">
160 
161                 <!-- Main Nav 2 -->
162                 <div class="sys-nav2">
163                     <div class="posr">
164                         <div class="titd">积分管理</div>
165                         <ul id="side-menu2">
166 
167                         </ul>
168                         <div class="minibtnd2">
169                             <a href="javascript:;"><i class="fa fa-outdent"></i></a>
170                         </div>
171                     </div>
172                 </div>
173                 <!-- ./Main Nav 2 -->
174                 <h2 class="sys-tit">
175                     <i class="fa fa-diamond fa-fw"></i>积分管理<span>/</span>礼品定义<span>/</span>新增
176                 </h2>
177                 <!-- Main Parent -->
178                 <div class="sys-parent">
179                     <form role="form" name="cardAddForm" id="cardAddForm" method="post"
180                         action="">
181                         <div class="promotion_add_box">
182                             <div class="row">
183                                 <div class="col-xs-1 text-right label-text">编码:</div>
184                                 <div class="col-xs-4">
185                                     <input type="text" class="form-control" id="giftcode"
186                                         name="giftcode" maxlength="50" readonly="readonly"
187                                         value="${code}">
188                                 </div>
189                                 <div class="col-xs-1 text-right label-text">名称:</div>
190                                 <div class="col-xs-4">
191                                     <input type="text" class="form-control" id="giftname"
192                                         name="giftname" maxlength="64">
193                                 </div>
194                             </div>
195                             <div class="row">
196                                 <div class="col-xs-1 text-right label-text">礼品类别:</div>
197                                 <div class="col-xs-4">
198                                     <select class="form-control" id="gifttype" name="gifttype">
199                                         <option value="0" selected="selected">商品</option>
200                                         <option value="1">抽奖</option>
201                                     </select>
202                                 </div>
203                                 <div class="col-xs-1 text-right label-text">单位:</div>
204                                 <div class="col-xs-4">
205                                     <select class="form-control" id="unitcode" name="unitcode">
206                                         <#list unitlist as fl>
207                                         <option value="${fl.unitname}">${fl.unitname}</option>
208                                         </#list>
209                                     </select>
210                                 </div>
211                             </div>
212                             <div class="row">
213                                 <div class="col-xs-1 text-right label-text">市场参考价:</div>
214                                 <div class="col-xs-4">
215                                     <input type="number" step="0.1" class="form-control"
216                                         id="orignial" name="orignial" value="0" maxlength="10">
217                                 </div>
218                                 <div class="col-xs-1 text-right label-text">库存数量:</div>
219                                 <div class="col-xs-4">
220                                     <input type="number" class="form-control" id="inventory"
221                                         name="inventory" value="0" maxlength="10">
222                                 </div>
223                             </div>
224                             <div class="row">
225                                 <div class="col-xs-1 text-right label-text">所需积分:</div>
226                                 <div class="col-xs-4">
227                                     <input type="number" class="form-control" id="needintegral"
228                                         name="needintegral" value="0" maxlength="10">
229                                 </div>
230                                 <div class="col-xs-1 text-right label-text">换购金额:</div>
231                                 <div class="col-xs-4">
232                                     <input type="text" class="form-control" id="needamount"
233                                         name="needamount" value="0" maxlength="10">
234                                 </div>
235                             </div>
236                             <div class="row">
237                                 <div class="col-xs-1 text-right label-text">每人限购次数:</div>
238                                 <div class="col-xs-4">
239                                     <input type="number" class="form-control col-xs-3" id="quota"
240                                         name="quota" value="0" maxlength="50">
241                                     <p class="help-desc">(0表示不限制)</p>
242                                 </div>
243                                 <div class="col-xs-1 text-right label-text">商品排序:</div>
244                                 <div class="col-xs-4">
245                                     <input type="number" class="form-control" id="ordernum"
246                                         name="ordernum" value="0" maxlength="50">
247                                 </div>
248                             </div>
249                             <div class="row">
250                                 <div class="col-xs-1 text-right label-text">礼品图片:</div>
251                                 <div class="col-xs-9">
252                                     <div class="panel-body" style="border: 1px solid #CCCCCC;">
253                                         <div class="row" style="margin-top: 0px !important;">
254                                             <div class="col-xs-6" style="height: 100px;">
255                                                 礼品图片:&nbsp;<span id="GTerr"></span>
256                                                 <p class="help-desc" style="padding: 10px 0px;">(建议尺寸:640
257                                                     x 640 像素;您可以拖拽图片调整图片顺序。)</p>
258                                                 <input id="logo_upload" name="image" type="file"
259                                                     multiple="multiple" style='display: none;'> <input
260                                                     type="text" class="form-control" id="logo"
261                                                     style='display: none;' maxlength="1024">
262                                             </div>
263                                             <div class="col-xs-6" style="height: 100px;">
264                                                 <div id="file_queue"></div>
265                                             </div>
266                                         </div>
267                                         <ul id="pics" class="ui-sortable"></ul>
268                                         <br />
269                                     </div>
270                                 </div>
271                             </div>
272                             <div class="row">
273                                 <div class="col-xs-1 text-right label-text">图文详情:</div>
274                                 <div class="col-xs-9" style="border: 1px solid #ccc;">
275                                     <div id="grt"></div>
276                                 </div>
277                             </div>
278                             <div class="row">
279                                 <div class="col-xs-1 text-right label-text">礼品参数:</div>
280                                 <div class="col-xs-9" style="border: 1px solid #ccc;">
281                                     <div id="gdt"></div>
282                                 </div>
283                             </div>
284 
285                             <div class="row">
286                                 <div class="sys-form-colbtn" style="text-align: center;">
287                                     <span id="errorinfo"></span>&nbsp;&nbsp;
288                                     <button type="button" class="btn btn-primary" id="btnSub"
289                                         onclick="clickSave();">
290                                         &nbsp;<i class="fa fa-floppy-o"></i> 保存&nbsp;
291                                     </button>
292                                     <button type="button" class="btn btn-default" id="btnCancel"
293                                         onClick="clickCancel();">
294                                         <i class="fa fa-times"></i> 取消
295                                     </button>
296                                 </div>
297                             </div>
298                         </div>
299                 </div>
300                 <input type="text" id="giftrichtext" name="giftrichtext"
301                     style="visibility: hidden"> <input type="text"
302                     id="giftdesctext" name="giftdesctext" style="visibility: hidden">
303                 </form>
304             </div>
305             <!-- ./Main Parent -->
306         </div>
307         <!-- ./Main Block -->
308     </div>
309     <!-- ./Main -->
310     </div>
311 
312     <script type="text/javascript">
313         /**页面加载执行**/
314         $(function() {
315 
316          
317             InitMenus("gift_list");
318 
319             //初始化文件上传的地方;
320             initLogoUpLoad();
321 
322             //初始化富文本的地方;
323             InitControl();
324 
325             initPage();
326 
327         });
328         
329         function initLogoUpLoad() {
330             var control = $("#logo_upload");
331             //图片排序
332             $("#pics").sortable();
333             control
334                     .uploadify({
335                         id : "logo_upload",
336                         buttonClass : "btn btn-primary",
337                         debug : false, // 是否开启调试模式
338                         auto : true, // 是否自动上传
339                         multi : true, // 是否允许多个上传
340                         queueID : 'file_queue',//上传图片的DIV
341                         fileObjName : "image", //上传的文件对象名,与后台所传参数名保持一致
342                         removeCompleted : true, // 上传完毕上传列表是否去除
343                         progressData : 'speed', // 进度 percentage或speed
344                         buttonText : "选择文件", // flash按钮文字
345                         method : 'post', // 提交方法 post或get
346                         fileSizeLimit : '2MB', // 上传文件大小设置 单位可以是B、KB、MB、GB
347                         fileTypeExts : '.png;.jpg;*.jpge;.bmp;*.gif;', // 文件类型
348                         swf : "${basepath}/static/scripts/plugins/uploadify/uploadify.swf", // swf位置
349                         cancelImg : '${basepath}/static/scripts/plugins/uploadify/uploadify-cancel.png',
350                         width : 82, // flash按钮宽度
351                         height : 34, // flash按钮高度
352                         fileDesc : '请选择 png jpg jpge bmp gif 文件',
353                         uploader : $.ServerURL.OpenAPIURL
354                                 + "/catering-openapi/file/upload", // 提交到的处理页面
355                         onUploadComplete : function(file) { // 上传完成时事件
356                             //$('#file_upload').uploadify('disable', true); //设置上传按钮不可用
357                         },
358                         onUploadError : function(image, errorCode, errorMsg,
359                                 errorString) { // 错误提示
360                             alert('文件: ' + image.name + ' 导入失败,具体原因:'
361                                     + errorString);
362                         },
363                         onFallback : function() {
364                             alert("您未安装FLASH控件,无法上传图片!请安装FLASH控件后再试。");
365                         },
366                         onUploadSuccess : function(image, data, response) {
367                             if (data != null && data != undefined
368                                     && isNotBlank(data)) {
369                                 var parsedJson = jQuery.parseJSON(data);
370                                 if (parsedJson.code != 1) {
371                                     return;
372                                 }
373 
374                                 //输出图片地址
375                                 console.log(parsedJson.host
376                                         + parsedJson.message);
377                                 //把图片显示出来
378                                 var html = "<li><div style='position: relative;' id='dfs'> <img longdesc = "+parsedJson.message +" src="+parsedJson.host + parsedJson.message+" name='mvUrl' width='100px' height='80px' class='myimg'/><div class='del ui-icon-closethick ui-icon'></div></div></li>";
379                                 $("#pics").append(html);
380                             }
381                         },
382                         onInit : function() {
383                             $("#logo_upload-button").removeClass(
384                                     "uploadify-button").css("line-height",
385                                     "20px");
386                         },
387                         onUploadStart : function(image) {//FSUpLoadSPATT  FSUpLoadSPTLogo
388 
389                         },
390                         onSelect : function(){
391                             
392                             
393                         },
394                         onSelectError : function(file, errorCode, errorMsg) {
395                             switch (errorCode) {
396                             case -110:
397                                 alert("文件 ["
398                                         + file.name
399                                         + "] 大小超出系统限制的"
400                                         + jQuery('#logo_upload').uploadify(
401                                                 'settings', 'fileSizeLimit')
402                                         + "大小!");
403                                 break;
404                             case -120:
405                                 alert("文件 [" + file.name + "] 大小异常!");
406                                 break;
407                             case -130:
408                                 alert("文件 [" + file.name + "] 类型不正确!");
409                                 break;
410                             }
411                         },
412                     });
413         }
414 
415          $(".del").die().live('click',function(){  
416              //删除改图片
417              console.log( $(this).parent().find("img").attr("longdesc"));
418              commonAjaxReturn($.ServerURL.OpenAPIURL+ "/catering-openapi/file/deleteFile"+ "?fileId=" + $(this).parent().find("img").attr("longdesc"));
419              $(this).parent().parent().remove();  
420           });   
421          
422           $(".preview").on({ mouseenter: function () {  
423               var src = $(this).parent().find("input").val();  
424               src = "${baseURL}/"+src;  
425               $("#testimg").attr("src",src);  
426               var left = $(this).position().left;  
427               var top = $(this).position().top;  
428               $("#imgf").css({left:left,top:top});  
429               $("#imgf").show();            
430           }, mouseleave: function () {  
431            
432               $("#imgf").hide();       
433           }  
434             });  
435           
436         function InitControl() {
437             $('#grt,#gdt').summernote({
438                 lang : 'zh-CN',
439                 minHeight : 200,
440                 height : 250,
441                 dialogsFade : true,// Add fade effect on dialogs
442                 dialogsInBody : true,// Dialogs can be placed in body, not in
443                 // summernote.
444                 disableDragAndDrop : false,// default false You can disable drag
445                 // and drop
446                 onImageUpload : function(files, editor, welEditable) { //the onImageUpload API  
447 
448                 }
449             });
450         }
451 
452         /*点击保存*/
453         function clickSave() {
454             //查找DIV pics 下面所有的ul 的src
455             //TODO 这一步之前图片的顺序需要正确
456             $(".myimg")
457                     .each(
458                             function() {
459                                 var d = $(this).attr("src");
460                                 d = "<input type='hidden' name='giftpicurl' class='mvurl' value="+d+">";
461                                 $("#cardAddForm").append(d);
462                                 console.log(d);
463                             });
464             //判断图片的数量
465             if($(".myimg").length >3){
466                 $.DU_show("errorinfo", "red", "礼品图片最多只能设置3张图片,请删减后再保存!");
467                 return ;
468             }
469             
470             //TODO 目前暂时不使用缩略图 所以暂时为空
471             $("#cardAddForm")
472                     .append(
473                             "<input type='hidden' name='giftpicthumburl' class='mvurl' value=''>");
474              
475 
476             $.DU_show("errorinfo", "red", "");
477 
478             // 名称不能为空
479             var unitName = $("#giftname").val();
480             if (!isNotBlank($.trim(unitName))) {
481                 $.DU_show("errorinfo", "red", "请输入名称");
482                 cardAddForm.giftname.focus();
483                 return;
484             }
485 
486             //参考价格
487             var orignial = $("#orignial").val();
488             if (!isNotBlank($.trim(orignial))) {
489                 $.DU_show("errorinfo", "red", "请输入市场参考价");
490                 cardAddForm.orignial.focus();
491                 return;
492             }
493 
494             //库存数量
495             var inventory = $("#inventory").val();
496             if (!isNotBlank($.trim(inventory))) {
497                 $.DU_show("errorinfo", "red", "请输入库存数量");
498                 cardAddForm.inventory.focus();
499                 return;
500             }
501 
502             //所需积分
503             var needintegral = $("#needintegral").val();
504             if (!isNotBlank($.trim(needintegral))) {
505                 $.DU_show("errorinfo", "red", "请输入所需积分");
506                 cardAddForm.needintegral.focus();
507                 return;
508             }
509 
510             //商品排序
511             var ordernum = $("#ordernum").val();
512             if (!isNotBlank($.trim(ordernum))) {
513                 $.DU_show("errorinfo", "red", "请输入商品排序");
514                 cardAddForm.ordernum.focus();
515                 return;
516             }
517             //TODO 这里临时默认给图片URL 赋值
518 
519             /* //图片不能为空
520             var giftpicurl = $("#giftpicurl").val();
521             if (!isNotBlank($.trim(giftpicurl))) {
522                 $.DU_show("errorinfo", "red", "请输入商品排序");
523                 cardAddForm.giftpicurl.focus();
524                 return;
525             }
526             
527             //缩略图不能为空
528             var giftpicthumburl = $("#giftpicthumburl").val();
529             if (!isNotBlank($.trim(giftpicthumburl))) {
530                 $.DU_show("errorinfo", "red", "请输入商品排序");
531                 cardAddForm.giftpicthumburl.focus();
532                 return;
533             }
534              */
535 
536             //检查富文本
537             console.log($("#grt").code());
538             console.log($("#gdt").code());
539 
540             $("input[name='giftrichtext']").val($("#grt").code());
541             $("input[name='giftdesctext']").val($("#gdt").code());
542 
543             $.DU_show("msgID", "green", "提交中,请稍候...");
544             //锁定按钮
545             $("#btnSub").attr("disabled", "disabled");
546             $("#btnCancel").attr("disabled", "disabled");
547 
548             var l_strjson = $('#cardAddForm').serialize();
549             var url = $.ServerURL.SiteDomain + $.ServerURL.GiftAdd;
550 
551             $.DU_showLoading();
552             $.ajax({
553                 url : url,
554                 type : "POST",
555                 dataType : "json",
556                 cache : false,
557                 data : l_strjson,
558                 success : function(msg) {
559                     $.DU_hideLoading();
560                     if (msg != null && msg != null && msg != undefined) {
561                         if (msg.status == "1") {
562                             $.DU_showDialogError('提示', msg.message);
563                             //取消按钮锁定
564                             $("#btnSub").removeAttr("disabled");
565                             $("#btnCancel").removeAttr("disabled");
566                             $.DU_show("msgID", "green", "");
567                         } else {
568                             parent.$.DU_showDialogSuccessReload("提示", "信息已添加");
569                             console.log('${basepath}' + '/mem/gift/index');
570 
571                             window.location.href = '${basepath}'
572                                     + '/mem/gift/index';
573                         }
574                     } else {
575                         $.DU_showDialogError("提示消息", "保存失败!");
576                         //取消按钮锁定
577                         $("#btnSub").removeAttr("disabled");
578                         $("#btnCancel").removeAttr("disabled");
579                         return;
580                     }
581                 }
582             });
583         }
584 
585         /*点击返回*/
586         function clickCancel() {
587             window.location.href = '${basepath}' + '/mem/gift/index';
588         }
589     </script>
590 </body>
591 </html>
View Code

 6.在WEB-INF 下面添加文件  crossdomain.xml

<?xml version="1.0" encoding="UTF-8"?>

<cross-domain-policy>
<allow-access-from domain="192.168.1.241" />

<allow-access-from domain="120.77.232.65" />

<allow-access-from domain="127.0.0.1" />

<allow-access-from domain="192.168.1.6" />

</cross-domain-polic

原文地址:https://www.cnblogs.com/maanshancss/p/6305859.html