en primer lugar, no sé si es legal hacer esto, pero lea esta pregunta para entenderme mejor.
como leyó en la pregunta, tengo problemas para insertar nuevos archivos en una entrada, sabía que obtenía solo el último archivo debido a que los introduje en la lista de archivos de entrada. así que cambié empujando de esto: ( que funcionaba, pero solo en la última entrada en el formulario )
function inputImage(quode, f){ let list = new DataTransfer(); list.items.add(f); let img = list.files; document.querySelector("#imageUploader_"+quode).files = img; }a esto:
function inputImage(quode, f){ document.querySelector("#imageUploader_"+quode).files.push(f); }pero me sale este error
document.querySelector(...).files.pushno es una función
lo entiendo de esta respuesta
También he probado esto
function inputImage(quode, f){ document.querySelector("#imageUploader_"+quode).files.add(f); }pero entiendo esto
TypeError:
document.querySelector(...).files.addno es una función
el objeto de archivo se ve así (desde la consola):
File { lastModified: 1642515255138 lastModifiedDate: Tue Jan 18 2022 17:14:15 GMT+0300 (GMT+03:00) {} name: "[(33),12,2314,100,45].jpeg" size: 8115 type: "image/jpeg" webkitRelativePath: "" [[Prototype]]: File }la lista de archivos:
FileList {length: 0[[Prototype]]: FileList}
EDITAR : ver esto puede ayudar
y esta es una documentación:
el motivo no estaba relacionado con la transferencia de datos ni siquiera con JS. el problema de que no estaba administrando la matriz de solicitudes a la perfección, por lo que solo obtengo el archivo de la última entrada, así que cambié la solicitud de este
public function store(Request $request){ $gen = ['_token','examHash','name','duration','bornline','deadline','note','hardness','vip','examType','published']; $questions = $request->except($gen);//questions $data = []; $count = 0; foreach($questions as $k => $i){ if(str_starts_with($k, 'ex_')){ $quode= ''; $ex = ''; $type = ''; $quode = str_replace("ex_", "", $k); $ex = $i; $type = $questions['questionType_'.$quode]; $count += 1; } $data += [$quode => []]; if(str_ends_with($k, $quode)){ // check if the $k is unnecessary element and skip it, add only needed data to $data array if((($type == "option" && (!str_starts_with($k, "label") && !str_starts_with($k, "single") && !str_starts_with($k, "choice"))) || ($type == "label" && (!str_starts_with($k, "option") && !str_starts_with($k, "single"))) || ($type == "single" && (!str_starts_with($k, "label") && !str_starts_with($k, "option") && !str_starts_with($k, "choice"))))){ $data[$quode]['sort'] = $count; $data[$quode] += [str_replace("_".$quode, "", $k) => $i]; } if(str_starts_with($k, "image")){ $questions['image_'.$quode]->storeAs('ques', $quode.$ex); } } } $data = array_merge(request()->only($gen), $data); dd($data); }a esto
foreach($questions as $k => $i){ if(str_starts_with($k, 'ex_')){ $quode= ''; $ex = ''; $type = ''; $image= ['']; $quode = str_replace("ex_", "", $k); $ex = $i; $type = $questions['questionType_'.$quode]; $image = $questions['image_'.$quode]; $count += 1; } $data += [$quode => []]; if(str_ends_with($k, $quode)){ // check if the $k is unnecessary element and skip it, add only needed data to $data array if((($type == "option" && (!str_starts_with($k, "label") && !str_starts_with($k, "single") && !str_starts_with($k, "choice"))) || ($type == "label" && (!str_starts_with($k, "option") && !str_starts_with($k, "single"))) || ($type == "single" && (!str_starts_with($k, "label") && !str_starts_with($k, "option") && !str_starts_with($k, "choice"))))){ $data[$quode]['sort'] = $count; $data[$quode] += [str_replace("_".$quode, "", $k) => $i]; $data[$quode]['image'] = $image; $data[$quode]['image']->storeAs('ques', $quode.$ex); } } }