我在我的網站上有我的Ajax AsyncFileUpload, 這裏是我需要做的: 1.當用戶瀏覽並選擇要上傳的文件時,我需要更新另一個asp .net texbox一些值 - 這個值是使用完整的瀏覽路徑添加一些字符串。AsyncFileUpload更新一些文本框
與此字符串更新的退出複雜,並使用我想這樣做的ASP.NET的C#代碼文件的所有路徑。
我該怎麼辦?
我在我的網站上有我的Ajax AsyncFileUpload, 這裏是我需要做的: 1.當用戶瀏覽並選擇要上傳的文件時,我需要更新另一個asp .net texbox一些值 - 這個值是使用完整的瀏覽路徑添加一些字符串。AsyncFileUpload更新一些文本框
與此字符串更新的退出複雜,並使用我想這樣做的ASP.NET的C#代碼文件的所有路徑。
我該怎麼辦?
你不能做到這一點,文件路徑不暴露在JavaScript中,這是一個安全功能。 在知道路徑之前,必須先上傳文件,即使此時您也不會知道完整的本地路徑。
如果您的應用程序功能是圍繞修改路徑名爲中心,我認爲它可以有意義讓他們輸入文件名稱在一個單獨的文本框中,然後您可以提交文本通過阿賈克斯進行修改,但這真的取決於你想要什麼。
window.location ="yourpath?string="+string
在你傳遞這個字符串的下一頁之後,你需要做這樣的事情來得到完整的路徑。
$(function()
{
$.extend({
getUrlVars: function(){
var vars = [], hash;
var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
for(var i = 0; i < hashes.length; i++)
{
hash = hashes[i].split('=');
vars.push(hash[0]);
vars[hash[0]] = hash[1];
}
return vars;
},
getUrlVar: function(name){
return $.getUrlVars()[name];
}
});
var previous_email = $.getUrlVar('string');
$("#pemail").val(''+previous_email+'')
});
這是檢索您的路徑,你在前一頁發送。缺點是我在這裏使用get方法。
讓我能夠得到使用postedFile.fileName服務器端完整的文件路徑,但我無法再與updtae我想要的字符串文本框,我怎麼能accomlish呢? – briler 2012-03-29 13:26:14
您是否使用AJAX控件工具包中的AsyncFileUpload?該OnClientUploadComplete事件應該爲你工作,你可以在服務器上的會話變量的完整路徑名保存,然後用PageMethod的從事件檢索它,看到http://www.asp.net/ajaxLibrary/AjaxControlToolkitSampleSite/AsyncFileUpload/ AsyncFileUpload.aspx更多 – 2012-03-29 13:40:30
同意@helmus,至少對於現代瀏覽器。 (我猜IE6使用的完整路徑發送到服務器。) helmus,一個錯字在你的第一句話:文件路徑不會暴露javascrit,但文件名是。 – jbl 2012-03-29 13:43:17