本文目錄一覽:
- 1、上傳控件 WebUploader 判斷有沒有上傳成功
- 2、如何判斷uploadify插件是否選擇了文件
- 3、java 上傳文件時判斷文件是否存在怎麼判斷?
- 4、asp.net fileupload 判斷文件是否過大
上傳控件 WebUploader 判斷有沒有上傳成功
該控件使用比較方便,但是準備做權限的時候確實讓我頭疼了。
默認如果啥也不處理,只要有返回數據就認為是成功,就算返回的是錯誤信息,也認為是成功了。
但是,在認為成功前會派送一個事件uploadAccept,這個事件是用來詢問是否上傳成功的。在這個事件中你可以拿到上傳的是哪個文件,以及對應的服務端返回reponse。
//如:上傳成功返回 {“success” :”1″} //如:上傳失敗返回 {“success” :”0″}
uploader.on(“uploadAccept”, function( file, data){ if (
data.success==”0″) { // 通過return false來告訴組件,此文件上傳有錯。 return false; } });
response是個對象,如果服務器返回是json格式,那麼正和你意,都已經解析好了,如果不是json格式,response._raw裏面可以拿到原始數據。所以,webuploader對於後端返回的數據格式是沒有要求的。
如何判斷uploadify插件是否選擇了文件
這裡要說的問題是為了驗證上傳文件是否已經存在於服務器,就需要checkExisting這一選項,看頁面JS代碼如下:
‘checkExisting’ : ‘/static/js/plugins/uploadify/check-exists.php’,
會交給check-exists.PHP後台文件來處理判斷文件存不存在,最初的源文件是這樣的:
就這麼幾句話,按常理來說,有了路徑文件名是可以file_exists()判斷文件是否存在服務器,但忽略了一個問題,就是如果自定義了上傳文件存放的路徑,如上所看到的floder:
若是這樣的話,文件判斷那就肯定是不存在的了,因為路徑都不對了,肯定找不到該文件……,此時看到,既然文件名能夠$_POST[]過來,那希望這個folder也能POST過來,那就來打印看看到底$_POST裏面放了些什麼,結果有些失望:
array (size=1)
‘filename’ = string ‘OOOPIC_SHIJUNHONG_20090809ad6104071d324dda.jpg’ (length=46)
就只有filename,什麼都沒了,接着還是不甘心,對JS不咋樣的還是硬着頭皮去看jquery.uploadify.min.js的源碼,皇天不負有心人!找了好久終於找到了,相關代碼如下:
原來這是已ajax提交過來的,其中的數據就只有filename,於是就想到把floder也傳過去,修改:
data: {
filename: d.name,
floder: e.formData.folder
},
然後再在check-exists.php文件接收:
這樣就大功告成了,可以判斷文件是否存在了。
如下圖:
java 上傳文件時判斷文件是否存在怎麼判斷?
下面是我做網站用過的,當時我們是判斷用戶上傳的頭像圖片是否在tomcat服務器upload文件夾下存在:
String path1 = getServletContext().getRealPath(“/”); // 獲取服務器地址
File f = new File(path1+”upload/”+u_id+”.jpg”); //此處你改為你要判斷的地址,我們的是獲取服務器地址/upload/id名.jpg
if(!f.exists()){//如果該圖片文件不存在
src1=”./upload/zg.jpg”;//則用默認頭像
}
else{ src1=”./upload/”+u_id+”.jpg”;}
//如果存在,則用該用戶上傳的頭像圖片
//下面就是顯示出這個圖片啦
%
p class=”STYLE2″基礎資料/p
hr align=”left” width=”400″
pspan class=”STYLE1″頭像:/spanimg src=”%=src1%” width=”40″height=”50″a href=”webs/user/up_photo.jsp”修改頭像/a/p
如果還不夠詳細請Q我,360307836
asp.net fileupload 判斷文件是否過大
這種方法不對,樓上的方法也肯定不行的,
首先你要弄清除:
服務器在執行【if(FileUpload1.PostedFile.ContentLength1500000)】這條語句的時候,其實文件都已經傳到服務器上了,明白了么?
當你點擊那個【上傳】按鈕的時候,頁面開始提交請求,並且把頁面上的所有forms和PostedFile都傳到服務器上,然後由服務器【http處理程序】負責創建page頁面以及所有page頁面的子控件樹,同時,也封裝了Request等等這些全局對象,接下來才開始執行頁面里的代碼:
if(FileUpload1.PostedFile.ContentLength1500000)
也就是說,當執行到以上代碼的時候,文件早都已經傳到服務器上了(或者超過大小報錯),你可以試試:把值改成15,再傳個20M的文件都會報錯的,
這個只能通過js腳本在前台提交請求之前判斷文件大小,
html xmlns=””
head
titletest/title
script type=”text/javascript”
function getFileSize(filePath)
{
var image=new Image();
image.dynsrc=filePath;
alert(image.fileSize);
if(image.fileSize 15000000)
{
alert(“文件太大!”);
}
}
/script
/head
body
input type=”file” name=”file” size=”30″ onchange=”getFileSize(this.value)” /
/body
/html
「怎麼input type=”file” name=”file” size=”30″ onchange=”getFileSize(this.value)” /
根本就沒有onchange的方法啊?」
肯定有,沒這個事件就怪了,
原創文章,作者:GGYO,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/144985.html