Entrada necessidade Arquivo elemento clonado a partir de 1 forma para outra via PHP e Javascript

StackOverflow https://stackoverflow.com/questions/873987

Pergunta

Ok, eu tenho uma função no modelo que get de submetidos via method = "POST". Mas eu não posso submeter esta normalmente, uma vez que este é tudo que eu quero submetidos, e já existe uma marca definida acima do código e que abaixo o código, fechando a forma com que deve permanecer lá. Desde então, não há nenhuma maneira de ter formas dentro de formas, estou usando Javascript para criar um formulário e enviá-lo on the fly. Mas eu preciso para obter uma cópia do elemento de entrada de arquivo definido na forma document.forms.creator. Eu estou usando PHP e Javascript para realizar o que eu tenho agora, mas o cloneNode (true) não está recebendo os $ _FILES [ 'image'] array e defini-la para o $ _FILES [ 'sigImg'] array: (

echo '<tr><td colspan="2"><a href="#" name="sig' . $user_info['id'] . '"></a><center><b>Signature Image Rotator</b></center><br /><center>
Add Image: <input type="file" size="48" id="imagefile" name="image" />&nbsp;&nbsp;<input type="button" value="Upload" onclick="createFormAndSubmit()"></center>';


echo '
<script language="JavaScript" type="text/javascript"><!-- // --><![CDATA[
//helper function to create the form
function getNewSubmitForm(){
 var submitForm = document.createElement("FORM");
 document.body.appendChild(submitForm);
 submitForm.enctype = "multipart/form-data";
 submitForm.method = "POST";
 return submitForm;
}

//function that creates the form, clones <input type="file" name="image">,
//and then submits it
function createFormAndSubmit(){
 var submitForm = getNewSubmitForm();
 var element = document.getElementById("imagefile");
    element = element.cloneNode(true);
    element.id = \'sigImgId\'; //<- ID Assignment
    element.name = \'sigImg\'; //<- NAME Assignment
    submitForm.appendChild(element);
 submitForm.action= "', $scripturl, '?action=sigimages;sa=upload";
 submitForm.submit();
}
// ]]></script></td></tr>';

Como posso obter um clone real da entrada de arquivo definido no php echo e colocá-lo na forma definida na função createFormAndSubmit () ??

Por favor, alguém ajuda ...

Foi útil?

Solução 2

Ok, muito obrigado Chris, vai certamente manter isso em mente. Tinha acabado de descobrir uma maneira de corrigir isso sozinho e estou usando este método, que só muda a ação e envia o formulário, único problema que submete tudo na forma em vez de apenas o objeto imagefile. Mas eu acho que não é realmente um problema, ou é? De qualquer forma funciona com este código:

// change the action and submit the form...
function submitSigImg(){
 var mainForm = document.forms.creator;
 mainForm.action= "', $scripturl, '?action=sigimages;sa=upload";
 mainForm.submit();
}

Isso só muda a ação do formulário que já está em e uma vez que esta função só se acostuma ao clicar do botão de upload e redireciona para a página, ela não é um problema ao enviar o formulário normalmente quer.

Obrigado mais uma vez:)

Outras dicas

O comentário Mark Allen por outro segmento está sugerindo que, em vez de anexar o seu novo input clonado (que IE não dá a propriedade de arquivo selecionado) para a outra forma, você substitui a entrada de idade, com a nova entrada (que se parece adequada), e depois você coloca a entrada de idade em seu formulário de upload.

Assim, o código seria:

// clone up a new one
var oldFile = document.getElementById("imagefile");
var newFile = oldFile.cloneNode(true);

// set props
newFile.id = "sigImgId"; //<- ID Assignment
newFile.name = "sigImg"; //<- NAME Assignment

// replace old with new
oldFile.parentNode.replaceChild(newFile, oldFile);

// attach old to upload form
submitForm.appendChild(oldFile);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top