EXCEL條件判斷,條件太多怎么編寫?達人請指教。(excel里多個條件的判斷)
900
2022-05-30
由于技術選型的原因,在一個產品中,我選擇了uploadify,選擇它的原因是它有完善的技術文檔說明(http://www.uploadify.com/documentation/),唯一不足的是官方文檔上的例子是用php寫的。而對與我們這些使用Java語言的小生們而言,在遇到問題后發現找到一個適合自己的例子很不好找。特別是當遇到瀏覽器兼容問題的時候,找了好久最終發現按照網上的方式進行編寫了,最終還是會出現莫名其妙的問題,而繼續查找資料的時候,發現講解的并不詳細。
下面我就把我遇到的這些問題現象、以及解決方案和大家分享一下,希望能夠幫助大家快速解決Java項目中的問題。
錯誤現象:
在:IE瀏覽器和谷歌瀏覽器中,當使用uploadify進行文件上傳的時候,是正常的,能夠上傳成功,當使用火狐瀏覽器的時候,發現死活也上傳不了。沒有任何反應,真是氣死人啊。
解決方法:
在百度上搜索”uploadify兼容性/uploadify不兼容獲取”,發現搜出很多,但仔細看,發現似乎都是一個人寫的文章。解釋的主要原因是(下面一段摘抄自:http://blog.csdn.net/longlong821/article/details/7785703):
jquery uploadify在ie下可以正常上傳,在實現異步上傳的時候,每一個文件在上傳時都會提交給服務器一個請求。每個請求都需要安全驗證,session和cookie的校驗。是的,就是這樣。由于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中的例子:
$(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
});
});
最關鍵的就是紅字那部份了,要注意的是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();
%>
var jsessionid = ‘${jsessionid}’;
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
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();
//隨機生成32位id,用于解壓文件目錄
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、編寫uploadify的js上傳方法:
/**
* 背景圖片上傳
* @param uploadId 背景設置中"選擇"按鈕的id
* @param imgDivId 背景設置中"圖片"小預覽圖所在div的Id
* @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,
Java MyBatis Spring
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。