繁体   English   中英

如何在OwnCloud上为上传的文件创建公共链接

[英]How to Create Public Link for Uploaded file on OwnCloud

我创建了一个Powershell脚本来在owncloud上上传文件。 上传效果很好,但如何获取该上传文件的公共链接。

下面是脚本

$user = "admin"
$pass= "admin"
$secpasswd = ConvertTo-SecureString $pass -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential($user, $secpasswd)
$body = "file=$(get-content c:\myupload.zip -raw)"
$targetname = "myupload.zip"
$oc = "http://myowncloud:8085/remote.php/webdav/NOC/"
Invoke-RestMethod -uri $oc$targetname -method Put -body $body -Credential $credential

我需要从代码中打印链接,例如

http://myowncloud:8085/index.php/s/aTQr8JNxEYCw1Vz

请注意,除非您明确地这样做,否则ownCloud不会为您上传的文件创建公共链接。 为此,您需要使用ocs Share API 在文档中,您会发现对于公共链接共享(即shareType = 3 ),您必须使用文件本身的path执行单独的POST请求。

我对您的代码进行了些许修改,以使其能够与最新的ownCloud实例(版本9及以下版本带有不同的WebDAV端点 )一起使用,并允许更好的URL组合:

# Upload the file
$body = $(get-content c:\test.txt -raw)
$targetname = "test.txt"
$oc = "http://demo.owncloud.com/"
$dav_endpoint = "remote.php/dav/files/admin/"
Invoke-RestMethod -Uri $oc$dav_endpoint$targetname -Method Put -Body $body -Credential $credential

# Create a public share for that file:
$headers = @{"Ocs-APIREQUEST"="true"}
$sharing_api = "ocs/v1.php/apps/files_sharing/api/v1/shares?format=json"

# Required parameters to create the share:
$body = @{
    path = "/$($targetname)"
    shareType = "3"
}

$response = Invoke-RestMethod -Uri $oc$sharing_api -Method Post -Headers $headers -Body $body -Credential $credential
# Print the public link URL:
echo $response.ocs.data.url

还请注意,这仅涵盖了幸福的道路 ,如果您检查每个请求的HTTP状态(即回复的正文),则脚本将更加正确和完整。

一个小的便条。 如果您使用Nextcloud而不是OwnCloud,则其工作原理完全相同,但是在创建共享链接时还有更多选择。 该文档位于: https: //docs.nextcloud.com/server/12/developer_manual/core/ocs-share-api.html Nextcloud是完全开源的,并且比Owncloud更快。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM