WebAPIはファイルのダウンロードリンクを返します
1515 ワード
インタフェースを介してSDEから一時的なMDBにデータをダウンロードし、フロントエンドのhttpダウンロードリンクに戻り、フロントエンドがこのリンクからMDBファイルを取得できるようにする必要がある.そこで、Webサイトのルートディレクトリ(App_Data、web.configと同級ディレクトリ)にTempDataディレクトリを作成し、ダウンロード後の一時MDBファイルを保存し、呼び出し要求を解析することでIPとポートを取得し、そのパスとダウンロードリンクをつなぎ合わせます.
コードは次のとおりです.
呼び出し時に返される結果は次のとおりです.
コードは次のとおりです.
///
/// :
///
///
[HttpGet]
[ResponseType(typeof(string))]
public IHttpActionResult Parse()
{
var sPath = @"E:\Code\MyTest\WebApplication2\WebApplication2\TempData\abc.mdb";
//var sPath = @"~\TempData\abc.doc";
if (sPath.IndexOf("~") == 0)
sPath = HostingEnvironment.MapPath(sPath); //
//
var sRootePath = HostingEnvironment.MapPath(HostingEnvironment.ApplicationVirtualPath);
// ( :TempData/abc.mdb)
var sRelativeUri = new Uri(sRootePath, UriKind.Absolute).MakeRelativeUri(new Uri(sPath, UriKind.Absolute)).ToString();
// ,
var sResult = (0 == string.Compare(Path.GetFullPath(sRelativeUri), Path.GetFullPath(sPath), StringComparison.OrdinalIgnoreCase))
? null : $"http://{HttpContext.Current.Request.Url.Authority}/{sRelativeUri}"; //
return Json(sResult);
}
呼び出し時に返される結果は次のとおりです.
"http://localhost:6730/TempData/abc.mdb"