以下のような2つの異なるサーバーがあります。
1. WebServer - 私のアプリケーションはどこにありますか
2. FileServer - アップロードされたすべてのファイルが特定の場所 / フォルダーにある場所
私のWebアプリケーションでは、FileServerからアップロードされたすべてのファイル(アップロードしたもの)を表示する1つのページを作成しました。
しかし、問題は、そのファイルを開いたり読み取ろうとすると、できないことです。私は SFTP のすべての権利を持っています。Try-catch ブロックで問題が発生しています。 「コードが最適化されているか、ネイティブ フレームが呼び出し履歴の上にあるため、式を評価できません。」 ファイルのアップロードとダウンロードに REBEX を使用しました。
注 : 単純なテキスト ファイル (.txt) を開くことはできますが、他の形式のファイル (.PDF、.docx、.jpg など) を開くことはできません。
私のファイル読み取りコードは以下のようなものです。
protected void LinkButton1_Click(object sender, EventArgs e)
{
try
{
LinkButton lbtn = (LinkButton)sender;
using (Sftp _sftp = new Sftp())
{
_sftp.Connect(serverNm, 22);
_sftp.Login(username, password);
_sftp.ChangeDirectory(currentDirectory);
Stream stream = _sftp.GetStream(lbtn.ToolTip.ToString(), FileMode.Open, FileAccess.Read);
StreamReader sourceStream = new StreamReader(stream);
Byte[] buffer = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd());
Response.Buffer = true;
if (lbtn.ToolTip.IndexOf(".pdf") > 0)
{
Response.ContentType = "application/pdf";
}
else if (lbtn.ToolTip.IndexOf(".txt") > 0)
{
Response.ContentType = "text/plain";
}
else if (lbtn.ToolTip.IndexOf(".xls") > 0)
{
Response.ContentType = "application/ms-excel";
}
else if (lbtn.ToolTip.IndexOf(".doc") > 0)
{
Response.ContentType = "application/msword";
}
else if (lbtn.ToolTip.IndexOf(".jpeg") > 0)// || lbtn.ToolTip.IndexOf(".jpg") > 0)
{
Response.ContentType = "image/jpeg";
}
else if (lbtn.ToolTip.IndexOf(".jpg") > 0)
{
Response.ContentType = "image/jpg";
}
else if (lbtn.ToolTip.IndexOf(".bmp") > 0)
{
Response.ContentType = "image/png";
}
Response.AddHeader("Content-Length", "attachment;filename=" + buffer.Length.ToString());
Response.BinaryWrite(buffer);
Response.End();
}
}
catch (Exception ex)
{
}
}
したがって、誰でもこの問題を解決するのに役立ちます。
最新の Mozilla ブラウザを使用しています。
ありがとうございました。