webdavサーバーに接続してファイルのアップロード、一覧の取得、ファイルのダウンロードを行う ~Delphiでお手軽プログラミング
LoadModule dav_module modules/mod_dav.so LoadModule dav_fs_module modules/mod_dav_fs.so LoadModule dav_lock_module modules/mod_dav_lock.so
DAVLockDB "C:/Apache24/logs/DavLock" Alias /dav "C:/Apache24/dav" <Directory "C:/Apache24/dav"> Dav On Options None Indexes AuthType Basic AuthName "DAV" AuthUserFile "C:/Apache24/.htpasswd" Require valid-user Order Allow,Deny Allow from all </Directory>
procedure TForm1.Button1Click(Sender: TObject); var res: TStringStream; strm:TMemoryStream; begin //「a.jpg」ファイルをWebDavにPUTする場合 strm:=TMemoryStream.Create; strm.LoadFromFile('a.jpg'); res := TStringStream.Create(''); try //基本認証(ベーシック認証)の場合 IdWebDAV1.Request.BasicAuthentication:=True; IdWebDAV1.Request.Username:='user'; IdWebDAV1.Request.Password:='pass'; //「a.jpg」ファイルを「abc.jpg」としてアップロードする IdWebDAV1.Put('http://localhost/dav/abc.jpg', strm, res); //レスポンスを表示する場合 Memo1.Lines.Text := res.DataString; finally strm.Free; res.Free; end; end;
procedure TForm1.Button2Click(Sender: TObject); var strm: TMemoryStream; begin strm:=TMemoryStream.Create; try //基本認証(ベーシック認証)の場合 IdWebDAV1.Request.BasicAuthentication:=true; IdWebDAV1.Request.Username:='user'; IdWebDAV1.Request.Password:='pass'; IdWebDAV1.Get('http://localhost/dav/abc.jpg',strm); strm.SaveToFile('zzz.jpg'); finally strm.Free; end; end;
procedure TForm1.Button3Click(Sender: TObject); var res: TStringStream; begin res := TStringStream.Create(''); try //基本認証(ベーシック認証)の場合 IdWebDAV1.Request.BasicAuthentication:=true; IdWebDAV1.Request.Username:='user'; IdWebDAV1.Request.Password:='pass'; IdWebDAV1.Get('http://localhost/dav/',res); //レスポンスを表示 Memo1.Lines.Text := res.DataString; finally res.Free; end; end;
<?xml version="1.0" encoding="utf-8"?> <D:multistatus xmlns:D="DAV:"> <D:response xmlns:lp1="DAV:" xmlns:lp2="http://apache.org/dav/props/"> <D:href>/dav/</D:href> <D:propstat> <D:prop> <lp1:resourcetype><D:collection/></lp1:resourcetype> <lp1:creationdate>2021-01-18T11:53:05Z</lp1:creationdate> <lp1:getlastmodified>Sun, 31 Jan 2021 00:35:55 GMT</lp1:getlastmodified> <lp1:getetag>"1000-5ba276b98627a"</lp1:getetag> <D:supportedlock> <D:lockentry> <D:lockscope><D:exclusive/></D:lockscope> <D:locktype><D:write/></D:locktype> </D:lockentry> <D:lockentry> <D:lockscope><D:shared/></D:lockscope> <D:locktype><D:write/></D:locktype> </D:lockentry> </D:supportedlock> <D:lockdiscovery/> </D:prop> <D:status>HTTP/1.1 200 OK</D:status> </D:propstat> </D:response> <D:response xmlns:lp1="DAV:" xmlns:lp2="http://apache.org/dav/props/"> <D:href>/dav/abc.jpg</D:href> <D:propstat> <D:prop> <lp1:resourcetype/> <lp1:creationdate>2021-01-31T00:35:55Z</lp1:creationdate> <lp1:getcontentlength>3270185</lp1:getcontentlength> <lp1:getlastmodified>Sun, 31 Jan 2021 00:35:55 GMT</lp1:getlastmodified> <lp1:getetag>"31e629-5ba276b982094"</lp1:getetag> <D:supportedlock> <D:lockentry> <D:lockscope><D:exclusive/></D:lockscope> <D:locktype><D:write/></D:locktype> </D:lockentry> <D:lockentry> <D:lockscope><D:shared/></D:lockscope> <D:locktype><D:write/></D:locktype> </D:lockentry> </D:supportedlock> <D:lockdiscovery/> <D:getcontenttype>image/jpeg</D:getcontenttype> </D:prop> <D:status>HTTP/1.1 200 OK</D:status> </D:propstat> </D:response> <D:response xmlns:lp1="DAV:" xmlns:lp2="http://apache.org/dav/props/"> <D:href>/dav/a.txt</D:href> <D:propstat> <D:prop> <lp1:resourcetype/> <lp1:creationdate>2021-01-18T12:24:18Z</lp1:creationdate> <lp1:getcontentlength>42</lp1:getcontentlength> <lp1:getlastmodified>Mon, 18 Jan 2021 12:24:18 GMT</lp1:getlastmodified> <lp1:getetag>"2a-5b92bcd10d659"</lp1:getetag> <D:supportedlock> <D:lockentry> <D:lockscope><D:exclusive/></D:lockscope> <D:locktype><D:write/></D:locktype> </D:lockentry> <D:lockentry> <D:lockscope><D:shared/></D:lockscope> <D:locktype><D:write/></D:locktype> </D:lockentry> </D:supportedlock> <D:lockdiscovery/> <D:getcontenttype>text/plain</D:getcontenttype> </D:prop> <D:status>HTTP/1.1 200 OK</D:status> </D:propstat> </D:response> </D:multistatus>