記事
· 6 hr 前 2m read

クライアントからPOSTされた ファイルを受け取るRESTサービスを作成する方法

これは InterSystems FAQ サイトの記事です。
 

以下の様なCurl コマンドで送信したファイルを受け取るRESTサービスを作成する方法を紹介します。

curl -X POST "http://localhost/api/upload?a=123&b=999" -F file=@"C:/temp/a.csv"

クライアントからPOSTされたファイルを受け取ってサーバーに保存するRESTサービスは以下の様に作成します。 

Class User.MyREST Extends %CSP.REST
{
Parameter HandleCorsRequest = 1;
XData UrlMap
{
 <Routes>
  <Route Url="/uploadimg" Method="POST" Call="readMimeData" />
  </Routes>
}
ClassMethod readMimeData() As %Status
{
    set upload=$g(%request.MimeData("csvfile", 1))
    set fname=%request.MimeData("csvfile",1).FileName
    set file=##class(%File).%New("c:\temp\"_fname)
    do file.Open("NWU")
    do file.CopyFrom(upload)
    set st = file.%Save()
    if st {
        write fname_" アップロード完了!!"
    } else {
        write fname_" アップロード失敗"
    }
    do file.Close()
    quit $$$OK
 }
}

このRESTサービスをクライアントから呼び出すために、以下の様な設定を行います。

管理ポータル>システム管理>セキュリティ>アプリケーション>ウェブ・アプリケーション>新しいウェブ・アプリケーションを作成の所で上で作成したRESTディスパッチクラスを登録します。 

名前: /api/upload

ネームスペース:  そのクラスを保存したネームスペース

RESTを有効にして、ディスパッチクラスにUser.MyRESTを設定する 

この設定はAPIを呼び出して実行することもできます。

zn "%SYS"
set sec = ##class("Security.Applications").%New()
set sec.Name = "/api/upload"
set sec.NameSpace = "USER"
set sec.DispatchClass ="User.MyREST"
set sec.AutheEnabled = 96
set status = sec.%Save()
ディスカッション (0)1
続けるにはログインするか新規登録を行ってください