تحتاج ملف عنصر الإدخال المستنسخة من 1 إلى شكل آخر عن طريق PHP و جافا سكريبت

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

سؤال

حسنا، لدي في قالب وظيفة التي تحصل على انها قدمت عن طريق وسيلة = "POST". ولكن لا أستطيع تقديم هذا طبيعي، لأن هذا هو كل ما أريد تقديمه، وهناك بالفعل علامة محددة فوق رمز ومن دون رمز، إغلاق النموذج مع ذلك يجب أن تبقى هناك. منذ ذلك الحين، لا توجد وسيلة لأشكال داخل أشكال، وأنا باستخدام جافا سكريبت لإنشاء نموذج وتقديمه على الطاير. ولكني في حاجة للحصول على نسخة من عنصر إدخال ملف تعريف في شكل document.forms.creator. أنا باستخدام PHP و جافا سكريبت لإنجاز ما لدي الآن، ولكن cloneNode (صحيح) لا يحصلون على $ _files [ 'صورة'] مجموعة وتعيينها إلى $ _files [ 'sigImg'] مجموعة: (

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>';

وكيف يمكنني الحصول على نسخة حقيقية من ملف الإدخال المحدد في صدى فب ووضعه في شكل محدد في وظيفة createFormAndSubmit () ؟؟

يرجى، شخص ما يساعد ...

هل كانت مفيدة؟

المحلول 2

وطيب، وذلك بفضل الكثير كريس، بالتأكيد سوف تضع ذلك في اعتبارها. قد برزت للتو وسيلة لإصلاح ذلك بنفسي وأنا باستخدام هذا الأسلوب الذي يتغير فقط عمل النموذج وتقدم، المشكلة فقط أنه يقدم كل شيء في الشكل بدلا من مجرد كائن imagefile. ولكن انا اعتقد ان هذا ليس حقا مشكلة، أو هو؟ يعمل على أي حال مع هذا الرمز:

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

وهذا يغير مجرد عمل الشكل الذي هو بالفعل في ومنذ هذه الوظيفة فقط يعتاد على النقر على زر تحميل والموجهات إلى الصفحة، وليس مشكلة عند تقديم النموذج عادة إما.

والشكر مرة أخرى:)

نصائح أخرى

والتعليق مارك ألين على موضوع آخر يقترح أنه بدلا من إلحاق بك إدخال المستنسخة الجديد (الذي IE لا يعطي خاصية الملف المحدد) إلى شكل آخر، يمكنك استبدال إدخال القديم مع إدخال الجديد (الذي يبدو السليم)، وبعد ذلك يمكنك وضع المدخلات القديمة على شكل التحميل.

وهكذا الشفرة سوف تصبح:

// 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);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top