Das Erstellen eines Imgur -Albums mit Bildern in einer Anfrage gibt ein leeres Album zurück - was mache ich falsch?C#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Das Erstellen eines Imgur -Albums mit Bildern in einer Anfrage gibt ein leeres Album zurück - was mache ich falsch?

Post by Anonymous »

Ich versuche, die IMGUR -API zu verwenden, um ein Album zu erstellen und Bilder mit meinem authentifizierten Konto in einer Anforderung angehängt zu lassen. Ich lade zuerst mehrere Bilder hoch (die ihre Bild-IDs zurückgibt) und nenne dann meinen Album-Creation-Endpunkt mit diesen Bild-IDs im Feld "IDS []" (zusammen mit den Parametern "Titel, Beschreibung, Cover und Datenschutz). Während der API -Anruf den Erfolg zurückgibt und eine Album -URL generiert wird, ist das Album leer (d. H. In drinnen sind keine Bilder). < /P>
// Upload images to Imgur and return both id and deletehash.
public async Task UploadImageAsync(string filePath, string accessToken)
{
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
using (var content = new MultipartFormDataContent())
{
var fileContent = new ByteArrayContent(File.ReadAllBytes(filePath));
fileContent.Headers.ContentType = MediaTypeHeaderValue.Parse("image/jpeg");
content.Add(fileContent, "image", Path.GetFileName(filePath));
var response = await client.PostAsync("https://api.imgur.com/3/upload", content);
var jsonResponse = await response.Content.ReadAsStringAsync();
var result = JsonConvert.DeserializeObject(jsonResponse);
if ((bool)result.success)
{
string id = result.data.id.ToString();
string delHash = result.data.deletehash?.ToString();
return (id, delHash);
}
else
{
string error = result.data?.error?.ToString() ?? "Unknown error";
throw new Exception($"Failed to upload image: {error}");
}
}
}
}

// Create an album with images (using the authenticated endpoint).
public async Task CreateAlbumAsync(string accessToken, List imageIds)
{
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
using (var content = new MultipartFormDataContent())
{
// Add each image id using key "ids[]"
foreach (var id in imageIds)
{
content.Add(new StringContent(id), "ids[]");
}
// Add a title, description, cover, and privacy settings.
content.Add(new StringContent("My dank meme album " + Guid.NewGuid().ToString()), "title");
content.Add(new StringContent("This album contains a lot of dank memes. Be prepared."), "description");
content.Add(new StringContent(imageIds[0]), "cover");
content.Add(new StringContent("hidden"), "privacy");

var response = await client.PostAsync("https://api.imgur.com/3/album", content);
var jsonResponse = await response.Content.ReadAsStringAsync();
if (!response.IsSuccessStatusCode)
{
throw new Exception($"Failed to create album: {jsonResponse}");
}
dynamic result = JsonConvert.DeserializeObject(jsonResponse);
if ((bool)result.success)
{
string albumId = result.data.id.ToString();
string albumDeleteHash = result.data.deletehash.ToString();
return (albumId, albumDeleteHash);
}
else
{
string error = result.data.error?.ToString() ?? "Unknown error";
throw new Exception($"Failed to create album: {error}");
}
}
}
}

private async Task ProcessLineAsync(string email, string accessToken)
{
string folderPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "photos", email);
if (!Directory.Exists(folderPath))
throw new Exception($"Folder not found: {folderPath}");

var desiredOrder = new List
{
"image1.jpg",
"image2.jpg",
"image3.jpg",
"image4.jpg",
"image5.jpg"
};

var imageFiles = desiredOrder
.Select(name => Path.Combine(folderPath, name))
.Where(File.Exists)
.ToList();

if (imageFiles.Count == 0)
throw new Exception("No images found to upload.");

List imageIds = new List();
foreach (var imageFile in imageFiles)
{
var (id, deletehash) = await UploadImageAsync(imageFile, accessToken);
imageIds.Add(id);
}

// Create the album and include the images.
var (albumId, albumDeleteHash) = await CreateAlbumAsync(accessToken, imageIds);
return $"https://imgur.com/a/{albumId}";
}

< /code>
Meine Fragen sind: < /p>

Was mache ich falsch beim Erstellen eines Albums mit Bildern mit der IMGUR -API? < /li>
Gibt es ein bekanntes Problem beim Anhängen von Bildern über den IDS [] Parameter in einer Anforderung? Das:

Die Bilder werden erfolgreich hochgeladen und die Bild -IDs sind gültig. Die Bilder werden angezeigt und sind das, was sie sein sollten. Br /> Alle Anleitungs- oder Codekorrekturen wären sehr geschätzt! Br /> Ich lade jedes Bild hoch Verwenden Sie den Endpunkt der IMGUR -API /Upload und sammeln Sie ihre IDs. Zusammen mit einem Titel, einer Beschreibung und einem Titelbild. mit dem Bild -IDs.) < /p>
Ich habe erwartet, dass nach diesen Schritten die Album -URL ein Album mit allen hochgeladenen Bildern anzeigt. Das Album wird jedoch erfolgreich erstellt, aber es erscheint leer (keine Bilder sind angehängt).

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post