0
我有一個帶有按鈕的ASP.Net網站,它將文件路徑傳遞給執行ajax調用web方法的javascript函數。你看到被傳遞到下面的OpenDoc文件路徑是JSON.stringify的結果(\ FS01 \文件...)將文件路徑從Javascript傳遞到C#使用Ajax Web服務
<input type="button" id="b0" value="Open" onclick="openDoc('"\\\\fs01\\Documents\\2011\\MEASEJA\\1108030203 (1) 10-3-2011 Mart Cart Service Completion Survey.pdf"');">
function openDoc(filename) {
var xml = new XMLHttpRequest();
xml.open("POST", "Default.aspx", true);
xml.onreadystatechange = function() {
if (xml.readyState == 4) {
if (xml.status == 200) {
$.ajax({
type: "POST",
dataType: "json",
contentType: "application/json",
url: "Service.asmx/openDoc",
data: '{ file:' + filename + '}',
success: function() { },
error: function (xml, status, error) {
var err = eval("(" + xml.responseText + ")");
alert("Open Doc: " + xml.Message);
}
});
}
}
}
xml.send(null);
}
[WebMethod]
public byte[] openDoc(string file)
{
FileStream fs = new FileStream(file, FileMode.Open, FileAccess.Read);
byte[] buffer;
try
{
int length = (int)fs.Length;
buffer = new byte[length];
int count;
int sum = 0;
while ((count = fs.Read(buffer, sum, length - sum)) > 0)
sum += count;
}
catch (Exception ex)
{
throw (ex);
}
finally
{
fs.Close();
}
return buffer;
}
問題是,沿途的某個地方,有事情發生到\文件中路徑和從ajax調用使用螢火蟲接收錯誤:
「無法識別的轉義序列(16):{file:」\ fs01 \ Documents \ 2011 \ MEASEJA \ 1108030203(1)10-3-2011 Mart Cart服務完成調查.pdf「}」
我知道在C#中必須加倍所有\,但這是文件路徑從按鈕單擊開始的方式。在某處,我失去了額外的功能,C#不能將它作爲文件處理。
之前,我把它作爲參數傳遞給阿賈克斯加倍? – jmease
其實,從頭開始。現在我仔細觀察,我知道你要做什麼。我會試一試,讓你知道。 – jmease
如果(file.StartsWith(@「\ f」)){file = @「\」+ file; }到Web方法的開始,但我得到相同的錯誤。 – jmease