mirror of
https://github.com/rclone/rclone.git
synced 2025-01-20 02:32:45 +08:00
b2: Fix link sharing #3314
This commit is contained in:
parent
a35aa1360e
commit
ccc416e62b
|
@ -629,6 +629,10 @@ func (f *Fs) list(ctx context.Context, dir string, recurse bool, prefix string,
|
|||
if err != nil {
|
||||
return err
|
||||
}
|
||||
// Check that there are matching files
|
||||
if len(response.Files) == 0 {
|
||||
return fs.ErrorDirNotFound
|
||||
}
|
||||
for i := range response.Files {
|
||||
file := &response.Files[i]
|
||||
// Finish if file name no longer has prefix
|
||||
|
@ -1227,6 +1231,15 @@ func (f *Fs) PublicLink(ctx context.Context, remote string) (link string, err er
|
|||
} else {
|
||||
RootURL = f.opt.DownloadURL
|
||||
}
|
||||
_, err = f.NewObject(ctx, remote)
|
||||
if err == fs.ErrorObjectNotFound || err == fs.ErrorNotAFile {
|
||||
err = f.list(ctx, remote, false, "", 1, f.opt.Versions, func(remote string, object *api.File, isDirectory bool) error {
|
||||
return errEndList
|
||||
})
|
||||
}
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
absPath := "/" + path.Join(f.root, remote)
|
||||
link = RootURL + "/file/" + urlEncode(f.bucket) + absPath
|
||||
bucketType, err := f.getbucketType()
|
||||
|
|
|
@ -301,6 +301,34 @@ server to the nearest millisecond appended to them.
|
|||
Note that when using `--b2-versions` no file write operations are
|
||||
permitted, so you can't upload files or delete them.
|
||||
|
||||
### B2 and rclone link ###
|
||||
|
||||
Rclone supports generating file share links for private B2 buckets.
|
||||
They can either be for a file for example:
|
||||
|
||||
```
|
||||
./rclone link B2:bucket/path/to/file.txt
|
||||
https://f002.backblazeb2.com/file/bucket/path/to/file.txt?Authorization=xxxxxxxx
|
||||
|
||||
```
|
||||
|
||||
or if run on a directory you will get:
|
||||
|
||||
```
|
||||
./rclone link B2:bucket/path
|
||||
https://f002.backblazeb2.com/file/bucket/path?Authorization=xxxxxxxx
|
||||
```
|
||||
|
||||
you can then use the authorization token (the part of the url from the
|
||||
`?Authorization=` on) on any file path under that directory. For example:
|
||||
|
||||
```
|
||||
https://f002.backblazeb2.com/file/bucket/path/to/file1?Authorization=xxxxxxxx
|
||||
https://f002.backblazeb2.com/file/bucket/path/file2?Authorization=xxxxxxxx
|
||||
https://f002.backblazeb2.com/file/bucket/path/folder/file3?Authorization=xxxxxxxx
|
||||
|
||||
```
|
||||
|
||||
<!--- autogenerated options start - DO NOT EDIT, instead edit fs.RegInfo in backend/b2/b2.go then run make backenddocs -->
|
||||
### Standard Options
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user