我已经知道Google云端存储中没有文件夹(它们被视为对象),所以请查看我的问题,你就可以理解我的意思了。谢谢: - )
这是我上传对象的方法,在我的具体情况下,我想上传一个“文件夹”,所以一个以'/'结尾的文件(例如:'newfolder /'),但我在我的代码末尾的execute()中收到GoogleJson错误。
[错误]:
Uncaught exception from servlet
com.google.api.client.googleapis.json.GoogleJsonResponseException: 400 OK
{
"code" : 400,
"errors" : [ {
"domain" : "global",
"message" : "Required",
"reason" : "required"
}, {
"domain" : "global",
"message" : "Required",
"reason" : "required"
}, {
"domain" : "global",
"message" : "Required",
"reason" : "required"
} ],
"message" : "Required"
}
[我在方法中的代码]:
StorageObject objectMetadata = null;
//default bucket
String bucketRootName = “defaultbucketname”;
//First Folder
String folderAppName = “myfolder”;
//folder that i want to create (upload)
folderName+="/";
String folderPath = folderAppName + "/" + folderName;
if (useCustomMetadata) {
List<ObjectAccessControl> acl = Lists.newArrayList();
acl.add( new ObjectAccessControl().setEntity("allAuthenticatedUsers").setRole("OWNER"));
objectMetadata = new StorageObject()
.setName(folderPath)
.setAcl(acl)
.setContentDisposition("attachment");
}
Storage.Objects.Insert insertObject = storage.objects().insert(bucketRootName, objectMetadata);
StorageObject metadata = insertObject.execute();
return metadata;
为了拥有一个像这样的路径的存储桶: defaultbucketname / MyFolder文件/文件夹名/
有谁知道如何解决它?
非常感谢
答案 0 :(得分:2)
上传的对象必须具有内容类型,即使它们的零字节大。
此外,我非常确定您必须上传实际文件,即使它的大小为零字节。
答案 1 :(得分:0)
我认为你不能用这种方式创建一个文件夹。但您可以通过设置名称来上传文件时创建它。
e.g。如果你想在foldA / foldB / test.txt下创建一个文件,你可以按照以下方式进行。
InputStream is = Files.newInputStream(path); //path if java.nio.file.Path
String mimeType = Files.probeContentType(path);
InputStreamContent isContent = new InputStreamContent(mimeType, is);
StorageObject objectMetadata = new StorageObject();
Storage.Objects.Insert insertObject = storage.objects()。insert(bucketRootName,objectMetadata,isContent);
insertObject.setName("foldA/foldB/"+path.getFileName().toString()); // path.getFileName().toString() will give u test.txt
insertObject.execute();