> For the complete documentation index, see [llms.txt](https://docs.platform9.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.platform9.com/private-cloud-director/images-and-image-library/image-upload-via-ui.md).

# Upload an Image Using the UI

## Overview

You can upload a virtual machine image to the Image Library Service directly from the <code class="expression">space.vars.product\_name</code> UI without installing the `pcdctl` CLI. The UI upload is suited for interactive, one-off imports; for scripted or bulk uploads use the `pcdctl` CLI method described in [Overview](/private-cloud-director/images-and-image-library/image-library---images.md).

In this guide, you will upload an image through the UI and verify that it reaches `active` status.

## Prerequisites

* You have a role that can create images in the target tenant. Read-only users cannot upload images.
* For **Upload Image File**, accept the Image Library Service certificate. If the upload button is greyed out or a certificate warning appears, see [Image Library Service Certificate Configuration](/private-cloud-director/images-and-image-library/image-library-certificate-configuration.md) before continuing. This is not required for **Upload Image via URL**.
* The image file is in a [supported format](/private-cloud-director/images-and-image-library/image-library---images.md#supported-image-formats) (`raw`, `qcow2`, or `iso`).
* The Image Library Service host has sufficient free disk space to hold the image. Check available space on the Image Library host before uploading large images.
* For **Upload Image via URL**, the Image Library Service host must reach the image download URL. Otherwise, the import fails and the image remains in `queued` status.

## Upload an Image

1. Sign in to the <code class="expression">space.vars.product\_name</code> UI and navigate to **Images**.
2. Select **Add Image**. The **Add Image** dialog opens.
3. In the **Image Selection** section, choose **Upload Image File** and select the image file on your local machine, or choose **Upload Image via URL** and enter the **Image Download URL**.
4. In the **Image Settings** section, complete the following fields:

   | Field                          | Description                                                                                                                                                                                                                                                                                                                                                                                                                            |
   | ------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
   | **Name**                       | A descriptive name for the image.                                                                                                                                                                                                                                                                                                                                                                                                      |
   | **Operating System**           | Select the operating system of the image.                                                                                                                                                                                                                                                                                                                                                                                              |
   | **Disk Format**                | Select the disk format that matches your file: `qcow2`, `raw`, or `iso`.                                                                                                                                                                                                                                                                                                                                                               |
   | **Visibility**                 | Select **Private** (the default) to restrict the image to the current tenant, **Shared** to share it with specific tenants, or **Public** (administrators only) to make it available to all tenants in the domain. When you select **Shared**, a **Tenant Access** list appears; select the tenants to share with. See [Share Images Across Tenants](/private-cloud-director/images-and-image-library/share-images-across-tenants.md). |
   | **Disable Delete (Protected)** | Toggle on to prevent accidental deletion of the image.                                                                                                                                                                                                                                                                                                                                                                                 |
5. Select **Add Image** to start the upload.
6. The image row appears in the **Images** table with a status of `queued` while the file transfers, then transitions to `saving`, and finally to `active` when the upload completes successfully.

{% hint style="info" %}
**Large images**

Large image files (several gigabytes) can take several minutes to upload depending on your network bandwidth to the Image Library host. The UI does not display a progress percentage for the file transfer. If the status stays at `queued` for more than a few minutes, see [Troubleshoot Image Upload Issues](/private-cloud-director/images-and-image-library/troubleshooting-and-log-files/image-service-troubleshooting-guide.md#troubleshoot-image-upload-and-queued-status).
{% endhint %}

{% hint style="info" %}
**Multiple storage backends**

If more than one storage backend is configured, the image is uploaded to the default backend and then copied automatically to all configured backends. The **Images** list shows a **Stores** column with the per-store copy status. To copy existing images to all backends, or to learn more about multiple storage backends, see [Image Library with Multiple Storage Backends](/private-cloud-director/images-and-image-library/image-library-multiple-storage-backends.md).
{% endhint %}

## Common Upload Errors

| Symptom                                                               | Likely Cause                                                                        | Resolution                                                                                                                                                                                                 |
| --------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| The **Add Image** button is not active or the dialog cannot be opened | Image Library Service certificate is not trusted in your browser                    | Follow [Image Library Service Certificate Configuration](/private-cloud-director/images-and-image-library/image-library-certificate-configuration.md).                                                     |
| Upload starts but the image stays in `queued` indefinitely            | Disk full on the Image Library host, service not running, or a network interruption | See [Troubleshoot Image Upload Issues](/private-cloud-director/images-and-image-library/troubleshooting-and-log-files/image-service-troubleshooting-guide.md#troubleshoot-image-upload-and-queued-status). |
| Upload fails immediately with an HTTP error                           | Incorrect disk format or container format selected, or the image file is corrupted  | Verify the format with `qemu-img info <image-file>` on a local machine and retry with the correct format.                                                                                                  |
| `403 Forbidden` error                                                 | Your user account does not have permission to create images in the current tenant   | Ask your administrator to grant the required role in the target tenant.                                                                                                                                    |

## Next Steps

After the image reaches `active` status, you can use it to create virtual machines. For advanced image configuration, such as setting image properties that control VM behavior, see [Image Properties](/private-cloud-director/images-and-image-library/image-properties.md).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.platform9.com/private-cloud-director/images-and-image-library/image-upload-via-ui.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
