Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

385
Views
Dropzone.js ¿Cómo obtengo una ID de la base de datos antes de que termine de cargarse un archivo?

Tengo una situación que he intentado solucionar de varias formas y no me ha funcionado.

Lo que necesito es que al iniciar la carga de un video, pueda crear una ID en la base de datos y devolverla al evento de envío de Dropzone sending event para enviarlo junto con los demás campos del formulario. Necesito la identificación porque mientras se carga el video, tengo que mostrar una vista previa de lo que se guardó en la base de datos y el usuario puede modificar el nombre del video.

Para crear la ID en la base de datos tengo esta función Ajax:

 function create() { var result; $.ajax({ type: 'post', url: urlroot + 'Videos/id', data: {}, success: function (response) { myCallback(response); } }); return result; } function myCallback(response) { return response; }

Y este es el evento de envío de Dropzone:

 this.on("sending", function (file, xhr, formData) { var idv = create(); formData.append("id", idv); formData.append("artistas", jQuery("#artistas").val()); formData.append("artistas", jQuery("#artistas").val()); });

El problema es que la respuesta $ ajax no llega antes de que se ejecute el evento de envío, por lo que mi "idv" ingresa al script PHP como "indefinido" . Entiendo que es por la llamada asíncrona. Traté de retrasar de alguna manera la ejecución del envío (con promesas o setTimeOut) pero no funciona.

También traté de crear directamente en el script PHP de carga, el ID en la base de datos y devolverlo con "return" o con "echo", pero la respuesta solo se puede recibir en el evento "success" y necesito que puedas para modificar el nombre del video mientras se carga al servidor.

También probé acceder en el evento "sending" a los datos del archivo u objeto XHR y con console.log me muestra el .responseText, pero cuando quiero acceder directamente me dice que está vacío:

 console.log(file.xhr.responseText); console.log(xhr.responseText);

No se que mas probar, necesito ese ID para modificar los datos en la base de datos mientras se sube el archivo ya que se puede repetir el nombre del video. Tal vez debería cambiar mi enfoque, si alguien me ilumina se lo agradecería mucho.

Quedo atenta a sus comentarios, y perdón por mi inglés.

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Puede usar session_id() para hacer el truco.

 <?php session_start(); $newkey=session_id(); echo $newkey; //eg ml1n8oc46ma6kqndpok38mk661 ?>

Paso 1

Cuando el usuario visita su sitio, incluso antes de que active la carga de archivos a través de Dropzone, el sistema podría crear esta ID para que obtenga una clave única.

Paso 2

Cuando cargue los archivos, asegúrese de almacenar esta clave única en la tabla db, junto con el nombre del archivo, en un nuevo registro (o para cargas de múltiples archivos, en nuevos registros). Asegúrese de que su tabla db tenga una clave de incremento automático

Paso 3

Ahora puede tener el session_id vinculado con su registro de video real en su base de datos, use ajax para devolver todos los registros ID incrementados automáticamente y luego puede ponerlos en forma de tabla en un DIV, y luego puede modificar el nombre del archivo de video simplemente por

 rename("/uploaded/video1.mp4","/uploaded/vidoe1_newname.mp4");

Por supuesto, creo que también necesita actualizar su tabla de db después de cambiar el nombre del archivo para que los datos de db coincidan con su nombre de archivo renombrado.

Algo como:

 $stmt = $this->mysqli->prepare("UPDATE uploadedfile SET filename=? WHERE id=? and session_id=?"); $currentkey=session_id(); $stmt->bind_param('sis', $newfilename, $id, $currentkey); // $id is the auto_incremented id returned from previous ajax $stmt->execute();

Para resumir:

  1. sube los múltiples archivos al servidor
  2. guarde los datos cargados del archivo en el servidor, vinculándolos con session_id
  3. use ajax para llamar a un PHP para recuperar la ID de todos los registros cargados (por ejemplo, seleccione * del archivo cargado donde session_id=?), Luego obtendrá las ID de incremento automático de los registros en los que puede seguir trabajando. (por ejemplo, use el retorno ajax y colóquelo en un DIV en forma de tabla y luego el usuario puede hacer clic para seleccionar qué foto cambiar el nombre y así sucesivamente)
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!