2012-05-21 64 views
2

我的問題是tittle.I有一個休息的DataSnap服務器,我想上傳與Java或Java文件script.How嗎? (最好有示例代碼) 非常感謝你!如何使用http更新datasnap rest服務器中的文件?

+0

您發送PUT請求,同樣,你會與任何其他類型的HTTP服務器,你想發送一個文件。不過,我懷疑這並不是你所問的。你會不會在你的問題中提供更多的細節?你有哪些任務部分有問題? –

+0

謝謝。我有datasnap服務器和datasnap客戶端,這個服務器和客戶端之間的上傳文件功能是可以的。但是現在另一個客戶端(java或者js)會調用這個函數來發送文件到服務器。我只想用http(如http:// server/method/function/param1 ...,一個參數是文件內容)使用舊的datasnap服務器。 – user1407916

回答

2

我曾經試圖通過一個流到REST調用,但最終 訴諸直接WebBroker請求上傳... 這是更容易管理。這也不是微不足道的,因爲您必須管理您在使用表單讓用戶選擇文件上傳時收到的多部分請求數據。

這是一些我使用在WebModuleBeforeDispatch的代碼:

類型TMyIdHTTPAppRequest =類(TIdHTTPAppRequest);

haReq := TMyIdHTTPAppRequest(Request); 
    fname := IntToStr (haReq.ContentLength); 
    multi := TMultipartRequestFiles.Create(haReq.FRequestInfo, 
     haReq.content); 

    if (multi.Count > 0) and Assigned (multi.Items[0]) then 
    begin 
    theFile := TFileStream.Create(ServerConf['fileupload:tempdir'] + folder + '\' + 
     multi.Items[0].FileName, fmCreate); 
     multi.Items[0].Stream.Position := 0; 
     TheFile.CopyFrom(multi.Items[0].Stream, multi.Items[0].Stream.Size); 
     theFile.Free; 

但是它是基於我有一個自定義TMultipartRequestFiles,試圖把它清理乾淨,並加載它作爲我放鬆開源擴展到德爾福的DataSnap的一部分。

任何其他解決方案來管理文件上傳?我想應該有一些東西可以在Indy中使用,我在很多年前就寫過這門課。

相關問題