es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo adjuntar un archivo a un formulario en Unity?

Actualmente estoy tratando de realizar una solicitud POST con un archivo adjunto al formulario, pero descubrí que no es el archivo que he adjuntado, sino solo la ruta hacia el archivo.

Mi pregunta es: ¿cómo puedo obtener este archivo y adjuntarlo al formulario?

Aquí está mi código hasta ahora:

string altPath = Path.Combine(Application.persistentDataPath, "nice-work.wav");

List<imultipartformsection> formData = new List<imultipartformsection>();
formData.Add(new MultipartFormFileSection("wavfile", altPath));

UnityWebRequest uwr = UnityWebRequest.Post(url, formData);
yield return uwr.SendWebRequest();

if (uwr.isNetworkError)
{
    Debug.Log("Error al enviar: " + uwr.error);
}
else
{
    Debug.Log("Recibido: " + uwr.downloadHandler.text);
}

La variable altPath es la ruta, pero no el archivo, y esto provoca una solicitud POST fallida.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para adjuntar el archivo al formulario en lugar de solo la ruta del archivo, puedes crear una nueva matriz de bytes utilizando el método ReadAllBytes() de la clase System.IO.File. Esto te permitirá obtener el contenido real del archivo y adjuntarlo al formulario. Aquí tienes un ejemplo de modificación de tu código:

    string altPath = Path.Combine(Application.persistentDataPath, "nice-work.wav");
    byte[] fileData = System.IO.File.ReadAllBytes(altPath);
    
    List<imultipartformsection> formData = new List<imultipartformsection>();
    formData.Add(new MultipartFormDataSection("wavfile", fileData, "nice-work.wav"));
    
    UnityWebRequest uwr = UnityWebRequest.Post(url, formData);
    yield return uwr.SendWebRequest();
    
    if (uwr.isNetworkError)
    {
        Debug.Log("Error al enviar: " + uwr.error);
    }
    else
    {
        Debug.Log("Recibido: " + uwr.downloadHandler.text);
    }
    

    En este código modificado, primero leemos los datos del archivo en una matriz de bytes utilizando el método ReadAllBytes(). Luego, creamos una nueva MultipartFormDataSection utilizando la matriz de bytes y el nombre del archivo. Finalmente, utilizamos esta nueva sección en lugar de MultipartFormFileSection en la lista formData. Esto debería permitirte adjuntar correctamente el archivo al formulario en tu solicitud POST.

Comments are closed.