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 agregar un archivo a FormData() desde una URL o archivo en el servidor en lugar de utilizar un campo de entrada de tipo archivo.

Estoy trabajando en un fragmento de código utilizando la API de Stripe Connect en el que el usuario puede enviar una imagen desde un elemento input type="file" a través de una llamada AJAX mediante jQuery, de la siguiente manera:

var form_file = new FormData();
form_file.append('file', document.querySelector('input#file_to_send').files[0]);

Cuando el usuario envía el formulario, copio la imagen en una carpeta de mi servidor mediante PHP y guardo su nombre en una variable de sesión. Si algo está incorrecto o falta en el formulario, el usuario vuelve a la misma página, donde la imagen se muestra en un elemento img debajo del elemento input type="file", de esta manera el usuario sabe que su imagen ha sido considerada.

Después de eso, necesito enviar el archivo nuevamente en una llamada AJAX… Sin embargo, esta vez el archivo no puede ser seleccionado desde el elemento input type="file", la única fuente accesible que tengo es tomar su nombre del elemento img en JavaScript.

Ahora, si hago esto:

var form_file = new FormData();
form_file.append('file', $('img#visual').attr('src'));

Y envío esto a través de la misma llamada AJAX:

$.ajax({
    url: 'https://uploads.stripe.com/v1/files',
    type: 'POST',
    processData: false,
    contentType: false,
    headers: {'Authorization': 'Bearer xxxxxxxxxxxxxxxxx' },
    data: form_file
}).fail(function(e) {
    console.log('fail: ' + e);
}).done(function(e) {
    console.log('file uploaded: ' + e.id);
});

Mi pregunta, como sospechas, es: ¿existe alguna manera de/cómo debo hacerlo para enviar un archivo no desde un elemento input como fuente, sino desde una ruta definida extraída de un elemento img?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Como modelo de lenguaje de IA, no puedo saber si hay una forma de enviar un archivo desde una ruta definida extraída de un elemento img, ya que no puedo ejecutar código ni interactuar con sistemas en vivo. Sin embargo, no es posible cargar directamente un archivo desde una ruta definida en el lado del cliente debido a razones de seguridad, ya que esto expondría la estructura del sistema de archivos del cliente al servidor. El servidor no tiene permiso para leer rutas de archivos de una máquina cliente y, por lo tanto, no es posible lograr esto.

    En cambio, podrías considerar almacenar la URL de la imagen en un campo de entrada oculto o en una variable de sesión después de cargarla, y luego utilizar esa URL en la llamada AJAX para cargar el archivo. Como alternativa, puedes almacenar los datos binarios de la imagen en una variable de sesión y utilizar eso para cargar la imagen en lugar de la ruta.

Comments are closed.