-
Notifications
You must be signed in to change notification settings - Fork 77
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support renaming files on Transfer Manager Upload #2638
Comments
Having this same issue... adding some more details Environment detailsOS type and version: MacOS 14.6.1 / Windows 11 (issue happens on both) Steps to reproduce
Code examplepackage org.example;
import com.google.cloud.storage.transfermanager.ParallelUploadConfig;
import com.google.cloud.storage.transfermanager.TransferManager;
import com.google.cloud.storage.transfermanager.TransferManagerConfig;
import com.google.cloud.storage.transfermanager.UploadResult;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Stream;
public class Main {
public static void main(String[] args) throws IOException {
uploadDirectoryContents(args[0], Paths.get(args[1]), args[2]);
}
private static void uploadDirectoryContents(String bucketName, Path sourceDirectory, String remotePath) throws IOException {
TransferManager transferManager = TransferManagerConfig.newBuilder().build().getService();
ParallelUploadConfig parallelUploadConfig = ParallelUploadConfig.newBuilder()
.setBucketName(bucketName)
.setPrefix(remotePath)
.build();
List<Path> filePaths = new ArrayList<>();
try (Stream<Path> pathStream = Files.walk(sourceDirectory)) {
pathStream.filter(Files::isRegularFile).forEach(filePaths::add);
}
List<UploadResult> results = transferManager.uploadFiles(filePaths, parallelUploadConfig).getUploadResults();
for (UploadResult result : results) {
System.out.println(
"Upload for "
+ result.getInput().getName()
+ " completed with status "
+ result.getStatus());
}
}
} Run the above example using arguments I would expect that the bucket contains the following files now gs://my-bucket-name/destination/file1.txt However, the bucket contains the following (for a MacOS scenario) gs://my-bucket-name/destination/Users/me/source/dir/file1.txt For Windows, the |
Hi Google Cloud team, is there any way to vote or bump this up? As it currently stands the TransferManager cannot feasibly be used in an application server context because we would have to mimic the entire object tree on our server's file system. For example, if we want objects to end up in A system to logically map local filesystem paths to their destinations in GCS would neatly solve this issue. (I'm happy to try a PR if nobody else is working on this.) |
We're currently scoping this and hope to have an implementation fairly soon. |
No description provided.
The text was updated successfully, but these errors were encountered: