Sie sind sehr nah dran! Der Trick besteht darin, ein URL-Pfadtrennzeichen, /
, in den Objektnamen und nicht in den Containernamen einzufügen. So funktioniert die OpenStack ObjectStorage-API und ist nicht spezifisch für .NET SDK oder Rackspace.
In der folgenden Beispielanwendung für die Konsole erstelle ich einen Container images
und füge dann eine Datei zu einem Unterverzeichnis in diesem Container hinzu, indem ich ihn thumbnails/logo.png
nenne. Die resultierende öffentliche URL für die Datei wird ausgedruckt und ist im Wesentlichen die öffentliche URL des Containers + der Dateiname oder http://abc123.r27.cf1.rackcdn.com/thumbnails/logo.png
. Die Container-URL wird für jeden Container und Benutzer eindeutig sein.
using System;
using net.openstack.Core.Domain;
using net.openstack.Providers.Rackspace;
namespace CloudFileSubdirectories
{
public class Program
{
public static void Main()
{
// Authenticate
const string region = "DFW";
var user = new CloudIdentity
{
Username = "username",
APIKey = "apikey"
};
var cloudfiles = new CloudFilesProvider(user);
// Create a container
cloudfiles.CreateContainer("images", region: region);
// Make the container publically accessible
long ttl = (long)TimeSpan.FromMinutes(15).TotalSeconds;
cloudfiles.EnableCDNOnContainer("images", ttl, region);
var cdnInfo = cloudfiles.GetContainerCDNHeader("images", region);
string containerPrefix = cdnInfo.CDNUri;
// Upload a file to a "subdirectory" in the container
cloudfiles.CreateObjectFromFile("images", @"C:\tiny-logo.png", "thumbnails/logo.png", region: region);
// Print out the URL of the file
Console.WriteLine($"Uploaded to {containerPrefix}/thumbnails/logo.png");
// Uploaded to http://abc123.r27.cf1.rackcdn.com/thumbnails/logo.png
}
}
}
Haben Sie versucht, [vorwärts statt Schrägstriche Schrägstriche] (https://developer.rackspace.com/docs/cloud-files/v1/developer-guide/#document-pseudo-hierarchical-folders-and- Verzeichnisse)? – stuartd
Ja, jedoch wird ein Fehler ausgegeben. "Container enthält"/"" – NuWin