Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(PureBasic) HTTP multipart/form-data UploadDemonstrates how to upload files to an HTTP server using a multipart/form-data POST.
IncludeFile "CkHttpResponse.pb" IncludeFile "CkHttp.pb" IncludeFile "CkHttpRequest.pb" Procedure ChilkatExample() ; This example requires the Chilkat API to have been previously unlocked. ; See Global Unlock Sample for sample code. http.i = CkHttp::ckCreate() If http.i = 0 Debug "Failed to create object." ProcedureReturn EndIf req.i = CkHttpRequest::ckCreate() If req.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkHttpRequest::setCkHttpVerb(req, "POST") CkHttpRequest::setCkContentType(req, "multipart/form-data") CkHttpRequest::setCkPath(req, "rcvFormDataUpload.aspx") ; Send an "Expect: 100-continue" header in the request. ; This causes the HTTP server to end a 100-continue response ; immediately after receiving the HTTP header. The client ; (Chilkat) will receive this intermediate response, and if ; it's not an error response, it knows that the HTTP server will ; accept the data that is forthcoming. ; The alternative is to get an error response after trying to upload ; the entire contents of the files. CkHttpRequest::ckAddHeader(req,"Expect","100-continue") ; Call AddFileForUpload2 for each file to be uploaded in the HTTP multipart/form-data POST ; To allow Chilkat to determine the content-type automatically based on file-extension, ; call AddFileForUpload instead. ; The 1st arg is the filename passed in the HTTP request. ; The 2nd arg is the path in the local filesytem. ; The file is not loaded into memory. It is streamed directly from the file ; when the HTTP POST is sent. success.i = CkHttpRequest::ckAddFileForUpload2(req,"starfish.jpg","c:/qa_data/starfish.jpg","image/jpg") If success <> 1 Debug CkHttpRequest::ckLastErrorText(req) CkHttp::ckDispose(http) CkHttpRequest::ckDispose(req) ProcedureReturn EndIf success = CkHttpRequest::ckAddFileForUpload(req,"something.pdf","c:/qa_data/something.pdf") If success <> 1 Debug CkHttpRequest::ckLastErrorText(req) CkHttp::ckDispose(http) CkHttpRequest::ckDispose(req) ProcedureReturn EndIf ; Its also possible to add a file from a string: success = CkHttpRequest::ckAddStringForUpload(req,"test.xml","test.xml","<abc>This is the test.xml content</abc>","utf-8") ; We'll assume success since no files are involved.. ; This sends the HTTP request (with 3 files being uploaded) to ; http://www.mywebserver123abc.com/rcvFormDataUpload.aspx resp.i resp = CkHttp::ckSynchronousRequest(http,"www.mywebserver123abc.com",80,0,req) If CkHttp::ckLastMethodSuccess(http) <> 1 Debug CkHttp::ckLastErrorText(http) Else Debug "HTTP response status: " + Str(CkHttpResponse::ckStatusCode(resp)) ; See the online reference documentation for ; other information that can be obtained from the response object. CkHttpResponse::ckDispose(resp) EndIf ; To send using SSL/TLS, do this instead. ; This sends to https://www.mywebserver123abc.com/rcvFormDataUpload.aspx resp = CkHttp::ckSynchronousRequest(http,"www.mywebserver123abc.com",443,1,req) If CkHttp::ckLastMethodSuccess(http) <> 1 Debug CkHttp::ckLastErrorText(http) Else Debug "HTTP response status: " + Str(CkHttpResponse::ckStatusCode(resp)) ; See the online reference documentation for ; other information that can be obtained from the response object. CkHttpResponse::ckDispose(resp) EndIf CkHttp::ckDispose(http) CkHttpRequest::ckDispose(req) ProcedureReturn EndProcedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.