2012-03-29 16 views
0

我在我的網站上有我的Ajax AsyncFileUpload, 這裏是我需要做的: 1.當用戶瀏覽並選擇要上傳的文件時,我需要更新另一個asp .net texbox一些值 - 這個值是使用完整的瀏覽路徑添加一些字符串。AsyncFileUpload更新一些文本框

與此字符串更新的退出複雜,並使用我想這樣做的ASP.NET的C#代碼文件的所有路徑。

我該怎麼辦?

回答

1

你不能做到這一點,文件路徑不暴露在JavaScript中,這是一個安全功能。 在知道路徑之前,必須先上傳文件,即使此時您也不會知道完整的本地路徑。

如果您的應用程序功能是圍繞修改路徑名爲中心,我認爲它可以有意義讓他們輸入文件名稱在一個單獨的文本框中,然後您可以提交文本通過阿賈克斯進行修改,但這真的取決於你想要什麼。

+0

讓我能夠得到使用postedFile.fileName服務器端完整的文件路徑,但我無法再與updtae我想要的字符串文本框,我怎麼能accomlish呢? – briler 2012-03-29 13:26:14

+0

您是否使用AJAX控件工具包中的AsyncFileUpload?該OnClientUploadComplete事件應該爲你工作,你可以在服務器上的會話變量的完整路徑名保存,然後用PageMethod的從事件檢索它,看到http://www.asp.net/ajaxLibrary/AjaxControlToolkitSampleSite/AsyncFileUpload/ AsyncFileUpload.aspx更多 – 2012-03-29 13:40:30

+1

同意@helmus,至少對於現代瀏覽器。 (我猜IE6使用的完整路徑發送到服務器。) helmus,一個錯字在你的第一句話:文件路徑不會暴露javascrit,但文件名是。 – jbl 2012-03-29 13:43:17

0
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方法。