日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

uploadify在火狐下上传不了的解决方案,java版(Spring+SpringMVC+MyBatis)详细解决方案

發布時間:2024/9/27 javascript 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 uploadify在火狐下上传不了的解决方案,java版(Spring+SpringMVC+MyBatis)详细解决方案 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


由于技術選型的原因,在一個產品中,我選擇了uploadify,選擇它的原因是它有完善的技術文檔說明(http://www.uploadify.com/documentation/),唯一不足的是官方文檔上的例子是用php寫的。而對與我們這些使用Java語言的小生們而言,在遇到問題后發現找到一個適合自己的例子很不好找。特別是當遇到瀏覽器兼容問題的時候,找了好久最終發現按照網上的方式進行編寫了,最終還是會出現莫名其妙的問題,而繼續查找資料的時候,發現講解的并不詳細。

下面我就把我遇到的這些問題現象、以及解決方案和大家分享一下,希望能夠幫助大家快速解決Java項目中的問題。

錯誤現象:

在:IE瀏覽器和谷歌瀏覽器中,當使用uploadify進行文件上傳的時候,是正常的,能夠上傳成功,當使用火狐瀏覽器的時候,發現死活也上傳不了。沒有任何反應,真是氣死人啊。

解決方法:

  • 在百度上搜索”uploadify兼容性/uploadify不兼容獲取,發現搜出很多,但仔細看,發現似乎都是一個人寫的文章。解釋的主要原因是(下面一段摘抄自:http://blog.csdn.net/longlong821/article/details/7785703):

  • ?jquery uploadifyie下可以正常上傳,在實現異步上傳的時候,每一個文件在上傳時都會提交給服務器一個請求。每個請求都需要安全驗證,sessioncookie的校驗。是的,就是這樣。由于jquery uploadify是借助flash來實現上傳的,每一次向后臺發送數據流請求時,ie會自動把本地cookie存儲捆綁在一起發送給服務器。但firefox、chrome不會這樣做,他們會認為這樣不安全。

    Session又稱為會話狀態,是Web系統中最常用的狀態,用于維護和當前瀏覽器實例相關的一些信息。舉個例子來說,我們可以把已登錄用戶的用戶名放在Session中,這樣就能通過判斷Session中的某個Key來判斷用戶是否登錄,如果登錄的話用戶名又是多少。

    ??????? 我們知道,Session對于每一個客戶端(或者說瀏覽器實例)是人手一份,用戶首次與Web服務器建立連接的時候,服務器會給用戶分發一個 SessionID作為標識。SessionID是一個由24個字符組成的隨機字符串。用戶每次提交頁面,瀏覽器都會把這個SessionID包含在 HTTP頭中提交給Web服務器,這樣Web服務器就能區分當前請求頁面的是哪一個客戶端。

  • 接著結合http://www.jb51.net/article/40380.htm中的例子:

  • <script type="text/javascript">?
    $(document).ready(function() {?
    ? ??
    $("#fileupload").uploadify({?
    ??? ????
    'swf' : '/uploadify/scripts/uploadify.swf',?
    ??? ????'uploader' : '/fileupload
    ;jsessionid=${pageContext.session.id}',?
    ??? ????
    'auto' : true,?
    ??? ????
    'multi' : false,?
    ??? ????
    'buttonText' : 'BROWSE',?
    ??? ????'fileDesc' : '
    支持格式:jpg/gif/jpeg/png/bmp.',?
    ??? ????
    'fileExt' : '*.jpg;*.gif;*.jpeg;*.png;*.bmp',?
    ??? ????
    'onUploadSuccess': onUploadSuccess?
    ? ??
    });?
    });?
    </script>?

    最關鍵的就是紅字那部份了,要注意的是jsessionid前面那個是個分號而不是問號,寫成問號就作為參數傳遞了

  • 最后在進行搜索,由于uploadify依賴flash,所以建議安裝針對火狐的Adobeflash插件.

  • 最后編寫自己的uploadify上傳例子:

  • 1、編寫jsessionid獲取的例子,在我們項目中,我把它放在了common-session.jsp中,內容如下(這樣寫的原因是,我們的前后臺用的不同的common.jsp,為了前后臺都使用同一套的jsessionid,通過<%@ include file="common-session.jsp" %>包含進去,注意:如果不這樣做,而是分別在兩套common.jsp中寫如下的jsessionid的代碼,最終發現要么后臺能夠使用上傳;要么前臺能夠使用上傳;或者前臺上傳一次之后,再去后臺上傳,發現上傳不了了,反之也是同樣的效果):

    <%@ page isELIgnored=”false” %>

    <%@ page language=”java” pageEncoding=”UTF-8”%>

    <%@ taglib uri=”http://java.sun.com/jsp/jstl/core” prefix=”c” %>

    <%

    String sessionid =? session.getId();

    %>

    <c:set var=”jsessionid” value=<%=sessionid %>scope=”session”/>

    <script name=”systemJs” type=”text/javascript”>

    var jsessionid = ‘${jsessionid}’;

    </script>

    2、在common.jsp中引入上面的"common-session.jsp

    3、編寫后臺java上傳邏輯,這里我是用的是springMVC+Spring+MyBatis,后臺代碼如下(關于下面代碼,并非我所寫,不覺得下面的java代碼是規范的,此處允許大家hehe 和吐槽)

    package XXXX;

    ?

    import java.io.File;

    import java.io.InputStream;

    import java.util.ArrayList;

    import java.util.Calendar;

    import java.util.HashMap;

    import java.util.List;

    import java.util.Map;

    import net.sf.json.JSONObject;

    ?

    import org.apache.log4j.Logger;

    /**此處略去一部分代碼**/

    ?

    @Controller

    @RequestMapping(value = “/import”, method = { RequestMethod.GET,RequestMethod.POST })

    public class ImportController extends BaseController{

    ???????? /** 用于打印日志 */

    ???????? private static final Logger logger = Logger

    ??????????????????????????? .getLogger(SpecialController.class);

    ????????

    /**

    ???????? ?* 圖片上傳

    ???????? ?* @param param

    ???????? ?* @param imageFile

    ???????? ?* @return

    ???????? ?*/

    ???????? @RequestMapping(value = “/uploadPicture”, produces = “text/json”)

    ???????? @ResponseBody

    ???????? public String uploadPicture(@RequestParam(“file”) MultipartFile imageFile) {

    ?????????????????? Map<String, Object> result = new HashMap<String, Object>();

    ?????????????????? if (!imageFile.isEmpty()) {

    ??????????????????????????? try {

    ???????????????????????????????????? Calendar calendar = Calendar.getInstance();//獲取當前時間

    ???????????????????????????????????? //時間路徑,解壓文件,以年月日創建文件夾

    ???????????????????????????????????? String dataPath =”/”+calendar.get(Calendar.YEAR)+”/”

    ???????????????????????????????????????????????????????????????? + (calendar.get(Calendar.MONTH)+1)+”/” + calendar.get(Calendar.DATE)+”/”;

    ???????????????????????????????????? // 原文件名

    ???????????????????????????????????? String srcName = imageFile.getOriginalFilename();

    ???????????????????????????????????? //獲取上傳文件后綴

    ???????????????????????????????????? String suffix = srcName.substring(srcName.lastIndexOf(“.”) + 1,

    ??????????????????????????????????????????????????????? srcName.length()).toLowerCase();

    ???????????????????????????????????? //隨機生成32id,用于解壓文件目錄

    ???????????????????????????????????? String uuid = UUIDGenerator.generate();

    ???????????????????????????????????? //新的文件名,隨機的uuid;

    ???????????????????????????????????? String picName = uuid +”.”+suffix;

    ????????????????????????????????????

    ???????????????????????????????????? //上傳圖片生成路徑

    ???????????????????????????????????? String imgPath =ExtendedServerConfig.getInstance()

    ???????????????????????????????????????????????????????????????? .getStringProperty(“THUMBNAIL_PATH”)+ ExtendedServerConfig.getInstance()

    ???????????????????????????????????????????????????????????????? .getStringProperty(“BACKGROUND_IMG_PATH”)+dataPath;

    ???????????????????????????????????? //生成圖片預覽路徑

    ???????????????????????????????????? String picturePath =ExtendedServerConfig.getInstance()

    ??????????????????????????????????????????????????????? .getStringProperty(“BACKGROUND_IMG_PATH”)+dataPath+picName;

    ???????????????????????????????????? //文件夾不存在,則創建

    ???????????????????????????????????? ?File destfile = new File(imgPath);

    ???????????????????????????????????? ?? if(!destfile.exists()){

    ?????????????????????????????????????????????? ?? destfile.mkdirs();

    ???????????????????????????????????? ?? }

    ???????????????????????????????????? // 寫文件

    ???????????????????????????????????? InputStream fi = imageFile.getInputStream();

    ???????????????????????????????????? //上傳文件寫入到配置文件夾下

    ???????????????????????????????????? FileUtils.writeFile(fi, imgPath+picName);

    ???????????????????????????????????? File file = new File(imgPath+picName);

    ???????????????????????????????????? if(file.exists()){

    ???????????????????????????????????? ??? result.put(“imgPath”, picturePath);//返回的圖片預覽路徑

    ???????????????????????????????????? ??? result.put(“ilename”, srcName);

    ???????????????????????????????????? }

    ??????????????????????????? } catch (Exception e) {

    ???????????????????????????????????? e.printStackTrace();

    ??????????????????????????? }

    ?????????????????? }

    ?

    ?????????????????? return JSONObject.fromObject(result).toString();

    ???????? }

    }

    4、編寫uploadifyjs上傳方法:

    /**

    ?* 背景圖片上傳

    ?* @param uploadId 背景設置中"選擇"按鈕的id

    ?* @param imgDivId 背景設置中"圖片"小預覽圖所在divId

    ?* @param imgSrcId 背景設置中"img標簽的id,src賦值用到

    ?* @param bgImgPath 隱藏的文本框值,存儲的是圖片路徑,取消是用到

    ?* @param childPathOfSelectedElement 表示被選擇了的

    ?* @param posFlag 表示對應的是針對誰進行標題設置

    ?*??????????????? "0":表示標題

    ?*??????????????? "1": 表示列表

    ?*/

    function uploadBackgroundImg(uploadId,imgDivId,imgSrcId,bgImgPath,childPathOfSelectedElement,posFlag){

    ??

    ?? $("#"+uploadId).uploadify({

    ??????? //是否自動上傳

    ??????? 'auto':true,

    ??????? 'height':37,

    ??????? 'swf': scriptsPath+"/uploadify/uploadify.swf",

    ??????? //文件選擇后的容器ID

    ??????? 'queueID':'uploadItemList',

    ??????? 'fileObjName':'file',

    ??????? //上傳處理程序

    ??????? 'uploader': basePath+'/import/uploadPicture.action;jsessionid=' + jsessionid,

    ??????? //允許上傳的文件后綴

    ??????? 'fileTypeExts':'*.jpg;*.gif;*.png;',

    ??????? //上傳文件的大小限制

    ??????? 'fileSizeLimit':'300MB',

    ??????? //上傳數量

    ??????? 'queueSizeLimit' : 1,

    ??????? 'queueID': 'fileQueue',

    ??????? //上傳到服務器,服務器返回相應信息到data

    ??????? 'onUploadSuccess':function(file, data,response){

    ??????? ?? var o = $.parseJSON(data);

    ??????? ?? var imgPath = o.imgPath;

    ??????? ?? if(imgPath=="" || imgPath ==null){

    ??????? ????? alert("圖片上傳不成功");

    ??????? ?? }else{

    ??????? ????? $("#"+imgDivId).show();

    ??????? ????? var path = vPath +imgPath;

    ??????? ????? $("#"+imgSrcId).attr("src",path);

    ??????? ????? $("#"+bgImgPath).val(imgPath);

    ????? ??????? var id = selectedElementInfo.get("id"); //獲得id的屬性值

    ????? ??????? $.tplComponentListSetting.removeCss(id,childPathOfSelectedElement,"background-image");//移除原來的背景圖片

    ????? ??????? var styleCss = $("#generatedCss").text();

    ????? ??????? var styleText = "#" + id + childPathOfSelectedElement +" {background-image: url('"+path+"') !important;}";

    ??????????? //替換或者在最后拼接

    ??????????? styleCss += "\r\n" + styleText;

    ??????????? $("#generatedCss").text(styleCss);

    ???????????

    ??????????? //表示的是標題

    ??????????? if("0" == posFlag){

    ??????????????? //設置相關的參數信息

    ??????????????? $("." + id + "_titleBackgroundAbsoluteImg").val(path);

    ??????????????? $("." + id + "_titleBackgroundRelativeImg").val(imgPath);

    ??????????? }

    ??????????? //表示的是列表

    ??????????? else if("1" == posFlag) {

    ??????????????? console.log("此處暫時略掉");

    ??????????? }

    ??????? ?? }

    ??????? }

    ??? });

    }

    注意上面的'uploader': basePath+'/import/uploadPicture.action;jsessionid=' + jsessionid,

    ?

    ?

    總結

    以上是生活随笔為你收集整理的uploadify在火狐下上传不了的解决方案,java版(Spring+SpringMVC+MyBatis)详细解决方案的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 中文字幕在线免费播放 | 邵氏电影《金莲外传2》免费观看 | 美女诱惑一区二区 | 久久久久久久久久久久久av | 多男调教一女折磨高潮高h 国内毛片毛片毛片毛片毛片 | www国产在线 | 婷婷色伊人 | 欧美人与禽zozzo禽性配 | 少妇久久久久久 | 色综合久久久久久 | 日本美女毛片 | 国产精品一卡二卡 | 影音先锋中文字幕一区二区 | 涩涩成人| 亚洲精品一区二区三区蜜桃久 | 夜夜操天天 | 国产社区在线 | 懂色av蜜臀av粉嫩av分享吧最新章节 | 日本黄色成人 | 久久国产精品久久久久久电车 | 欧美二区在线观看 | 国产裸体永久免费无遮挡 | wwwxxx亚洲| 天堂аⅴ在线最新版在线 | 男女啪啪国产 | 国产三级按摩推拿按摩 | 成人h动漫精品一区二区下载 | 久久综合色鬼 | 亚洲一区二区乱码 | 青青av| 伊人精品| www插插插| 国产私拍 | 毛片视频免费 | 欧美视频在线免费 | 日日日干 | 都市激情久久 | 久久riav | 香蕉视频91 | 日批免费在线观看 | 日日艹夜夜艹 | 国产精品一区久久 | 成人福利小视频 | 黄色一级片在线播放 | 久久香蕉精品 | 中文在线字幕 | 国产成人精品三级麻豆 | 成人xx视频| 精品99在线 | 天天操夜夜操 | 杨贵妃颤抖双乳呻吟求欢小说 | 国产成人无码精品久久久久久 | 欧美精品免费播放 | 密臀av| 91在线欧美| 操人网| 国产精品一区二区在线免费观看 | 中文有码在线 | 欧美精品自拍 | 69影院在线观看 | 国产成人一区二区三区电影 | 给我免费观看片在线电影的 | 欧美 日韩 国产 中文 | 在线欧美色 | 97人妻人人揉人人躁人人 | 亚洲欧美一区二区三区孕妇 | 大尺度做爰呻吟舌吻情头 | 波多一区二区 | 国产情侣小视频 | 丁香婷婷亚洲 | 一起操在线观看 | 国产午夜精品一区二区三区视频 | 免费在线观看日韩 | 国产自偷自拍视频 | 成年人的免费视频 | 欧美成人黑人猛交 | 亚洲高清免费观看 | 毛片视频在线免费观看 | 国产网站在线免费观看 | 欧美日韩高清在线观看 | 尤物视频在线免费观看 | 午夜大片| 在线免费观看亚洲视频 | 中文字幕在线视频播放 | 国产精品16p| 成人av片在线观看 | 天天插插插 | 久久va| 麻豆污视频 | 日韩毛片中文字幕 | 在线免费观看视频你懂的 | 无码成人精品区一级毛片 | 亚洲婷婷小说 | 欧美成人hd | 肥熟女一区二区三肥熟女 | 自拍av在线 | 5d肉蒲团之性战奶水 | 亚洲乱码精品 | 亚洲熟女少妇一区 |