本文目錄一覽:
- 1、java或js(可用jquery)如何獲取上傳文件原始路徑名?
- 2、javascript 中怎樣獲取file里的完整路徑,如:D:\E\1.jpg
- 3、jsp頁面如何用js獲取上傳文件的真實路徑,不通過修改瀏覽器設置的方式
- 4、js彈出窗口 + 獲取上傳文件全路徑。想點擊“導入”可以能彈出這個文本框,回復給具體的代碼,給採納
- 5、js如何獲取file控件的完整路徑
- 6、怎麼用js獲取上傳文件的完整路徑
java或js(可用jquery)如何獲取上傳文件原始路徑名?
上傳文件時,我想獲取客戶端上傳文件的原始路徑。第一考慮,當然是使用js,例如網上可以找到的:function getPath(obj) { if (obj) { if (window.navigator.userAgent.indexOf(“MSIE”) = 1) { obj.select(); return document.selection.createRange().text; } else if (window.navigator.userAgent.indexOf(“Firefox”) = 1) { if (obj.files) { return obj.files.item(0).getAsDataURL(); } return obj.value; } return obj.value; } } 但這樣的代碼在Ie下還是可行的,但在火狐下不兼容。所以又想通過servlet的第三方工具去做,例如FileUpload,本以為FileItem下的getName()方法能夠得到全路徑名,但結果仍然只得到文件名,很是杯具!求解決方法!?引用input type=”file” name=”file” /至於你說的,不明白你的意思關鍵問題是我要獲得這個路徑,並且傳遞到後台!用js會有兼容性問題,如果用FileUpload上傳,是否可以獲得呢?我是沒有得到的!!! 問題補充:zhanjia 寫道上傳文件一般用input標籤,type為file,瀏覽選擇文件後就是文件在本地的絕對路徑了引用input type=”file” name=”file” /至於你說的,不明白你的意思關鍵的問題是我要獲得這個本地路徑,並且傳到後台!用js可以得到,但存在兼容性問題!?如果用FileUpload呢?我暫時還沒有得到!!! 問題補充:zhanjia 寫道網上的一些解決方案:一般都是上傳以後在數據庫中保存上傳後的文件路徑,本地路徑一般沒意義除非像上面所說的文件上傳預覽,還有那麼點用處我用來做數據接口的,我僅僅是把路徑傳給另一個系統,然後那個系統就可以從這個路徑取文件了。如果先上傳一次,再給對方,這樣不但影響上傳速度,而且會產生大量的垃圾文件。
javascript 中怎樣獲取file里的完整路徑,如:D:\E\1.jpg
像這樣的文章很多,隨便找了一個你看看
獲取文件目錄路徑的JavaScript代碼
很多時候我們都需要在js文件中獲取該文件的詳細路徑,以便根據其他文件與該js的相對位置計算並設置其他一些文件如圖片或樣式或腳本的目錄路徑。我們一般都這樣做:
假設外部js文件的文件名為:test.js,則在test.js中都這樣寫:
var js=document.scripts;
var jsPath;
for(var i=0;ijs.length;i++){
if(js[i].src.indexOf(“test.js”)-1){
jsPath=js[i].src.substring(0,js[i].src.lastIndexOf(“/”)+1);
}
}
alert(jsPath);
或者為了提高效率,這樣寫
var js=document.scripts;
var jsPath;
for(var i=js.length;i0;i–){
if(js[i-1].src.indexOf(“test.js”)-1){
jsPath=js[i-1].src.substring(0,js[i-1].src.lastIndexOf(“/”)+1);
}
}
alert(jsPath);
這種思路很清晰,根據文件名獲取引用的文件的src屬性並進行判斷截取即可。
但這種辦法有以下兩個缺點:
1、需要遍歷頁面的js文件,有時可能效率會比較低。
2、如果頁面中出現目錄不同的重名的js文件則可能判斷錯誤。
其實我們可以有更簡單的辦法來準確獲取路徑,這是在一次js測試突然發現並幡然醒悟的。
var js=document.scripts;
js=js[js.length-1].src.substring(0,js[js.length-1].src.lastIndexOf(“/”)+1);
alert(js);
直接使用js.length?這會正確嗎?
其實仔細想想,由於判斷路徑的js代碼一般都直接放在js文件中而不是函數中,所以當加載該js文件時會立即執行其中的語句,而執行此語句時所獲取到的js文件數目正好是js.length-1,因為頁面後面的js文件還沒有加載,所以該處的js文件獲取的數目並不是頁面所有的js文件的數目。這樣一來,獲取路徑就無需再遍歷了,而且文件判斷也無需文件名,判斷更加準確(js.length-1永遠都是其文件本身)。
獲取windows系統臨時目錄
script
var fso = new ActiveXObject(“Scripting.FileSystemObject”);
var f = fso.GetSpecialFolder(2);
alert(f);
/script
jsp頁面如何用js獲取上傳文件的真實路徑,不通過修改瀏覽器設置的方式
你應該回去找提供你這段代碼的網頁,看一下getPath函數的參數obj是什麼,輸入參數有什麼要求。
就這段代碼看,obj應該是一個對象,並且這個對象有select()方法;而恰好jQuery對象就有select()方法,有可能(僅僅是有可能)你需要將obj包裝成jQuery對象後,再作為getPath函數的參數代入試試。
提示:
dom對象轉為jQuery對象:有dom元素el,通過$(el)操作就可以轉為jQuery對象
js彈出窗口 + 獲取上傳文件全路徑。想點擊“導入”可以能彈出這個文本框,回復給具體的代碼,給採納
本文的地址是:
script language=javascript
function MM_findObj(n, d) { //v4.0
var p,i,x; if(!d) d=document; if((p=n.indexOf(“?”))0parent.frames.length) {
d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
if(!(x=d[n])d.all) x=d.all[n]; for (i=0;!xid.forms.length;i++) x=d.forms[i][n];
for(i=0;!xd.layersid.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
if(!x document.getElementById) x=document.getElementById(n); return x;
}
function JM_cc(ob){
var obj=MM_findObj(ob); if (obj) {
obj.select();js=obj.createTextRange();js.execCommand(“Copy”);}
alert(” 恭喜您!複製成功!\n\n 已經把該頁網址複製到系統剪貼板 \n\n 您可以使用(ctrl+v或鼠標右鍵)粘貼功能 \n\n 通過qq、msn或其他軟件發送給您的朋友或記錄下來。”);
}
document.write(‘input name=”page_url” value=”‘+window.location.href+'” size=”38″ input type=”button” name=”button” style=color:red value=”複製本頁網址發給好友” onclick=JM_cc(“page_url”)’);
/script
js如何獲取file控件的完整路徑
代碼如下:
script type=”text/javascript”
//FX獲取文件路徑方法
function readFileFirefox(fileBrowser) {
try {
netscape.security.PrivilegeManager.enablePrivilege(“UniversalXPConnect”);
}
catch (e) {
alert(‘無法訪問本地文件,由於瀏覽器安全設置。為了克服這一點,請按照下列步驟操作:(1)在地址欄輸入”about:config”;(2) 右鍵點擊並選擇 New-Boolean; (3) 輸入”signed.applets.codebase_principal_support” (不含引號)作為一個新的首選項的名稱;(4) 點擊OK並試着重新加載文件’);
return;
}
var fileName=fileBrowser.value; //這一步就能得到客戶端完整路徑。下面的是否判斷的太複雜,還有下面得到ie的也很複雜。
var file = Components.classes[“@mozilla.org/file/local;1”]
.createInstance(Components.interfaces.nsILocalFile);
try {
// Back slashes for windows
file.initWithPath( fileName.replace(/\//g, “\\\\”) );
}
catch(e) {
if (e.result!=Components.results.NS_ERROR_FILE_UNRECOGNIZED_PATH) throw e;
alert(“File ‘” + fileName + “‘ cannot be loaded: relative paths are not allowed. Please provide an absolute path to this file.”);
return;
}
if ( file.exists() == false ) {
alert(“File ‘” + fileName + “‘ not found.”);
return;
}
return file.path;
}
//根據不同瀏覽器獲取路徑
function getvl(){
//判斷瀏覽器
var Sys = {};
var ua = navigator.userAgent.toLowerCase();
var s;
(s = ua.match(/msie ([\d.]+)/)) ? Sys.ie = s[1] :
(s = ua.match(/firefox\/([\d.]+)/)) ? Sys.firefox = s[1] :
(s = ua.match(/chrome\/([\d.]+)/)) ? Sys.chrome = s[1] :
(s = ua.match(/opera.([\d.]+)/)) ? Sys.opera = s[1] :
(s = ua.match(/version\/([\d.]+).*safari/)) ? Sys.safari = s[1] : 0;
var file_url=””;
if(Sys.ie=”6.0″){
//ie5.5,ie6.0
file_url = document.getElementById(“file”).value;
}else if(Sys.ie=”7.0″){
//ie7,ie8
var file = document.getElementById(“file”);
file.select();
file_url = document.selection.createRange().text;
}else if(Sys.firefox){
//fx
//file_url = document.getElementById(“file”).files[0].getAsDataURL();//獲取的路徑為FF識別的加密字符串
file_url = readFileFirefox(document.getElementById(“file”));
}
//alert(file_url);
document.getElementById(“text”).innerHTML=”獲取文件域完整路徑為:”+file_url;
}
/script
h1JS獲取文件域完整路徑的方法,兼容不同瀏覽器/h1
div id=”text” style=”color:#f00;”/div
input type=”file” id=”file” /
input name=”” type=”button” value=”獲取” onClick=”getvl();”
怎麼用js獲取上傳文件的完整路徑
file是一種特殊的input,不能被賦值,也不能被javascript取值,只能隨表單提交,而且隨表單提交的也是file路徑所指向的文件本身。
這是瀏覽器安全原因所限制的,如果可以取值和賦值的話,那麼javascript就可以隨意獲取你電腦上的文件了,這是非常危險的
原創文章,作者:H059F,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/130725.html