表单enctype,uploadify脚本的Javascript问题

时间:2011-03-02 00:14:33

标签: php javascript jquery uploadify

我需要使用uploadify脚本发送数据时遇到问题。

第一次,uploadify脚本安装正确,一切正常。但是我需要为mysql和其他人使用上传的数据(通过uploadify脚本)。

以下是我调用uploadify脚本的代码:

<script type="text/javascript">
$(document).ready(function() {
$('#file_upload').uploadify({
    'uploader' : '/uplod/uploadify/uploadify.swf',
    'script' : '/uplod/uploadify/uploadify.php',
    'cancelImg' : '/uplod/uploadify/cancel.png',
    'folder' : '/uplod/uploads/',
    'auto' : true,
    'multi' : false,
    'onComplete': function(event, queueID, fileObj, response, data){
        var form = document.forms['form'];
        var i = 0;
        var el = document.createElement("input");
            el.type = "hidden";
            el.name = "test";
            el.id = "test2";
            el.value = fileObj.name;
            form.appendChild(el); },
            'onAllComplete': function(event,data) { document.getElementById('form').submit();},
 });
});
</script> 

我发现此代码位于:http://www.uploadify.com/forums/discussion/7102/for-all-those-who-struggle-on-inserting-filenames-into-a-db-after-uploading/p1

它是关于如何在文件上传后回调的。

这是uploadify.php代码:

<?php
   if (!empty($_FILES)) {
   $tempFile = $_FILES['Filedata']['tmp_name'];
   $targetPath = $_SERVER['DOCUMENT_ROOT'] . $_REQUEST['folder'] . '/';
   $targetFile = str_replace('//','/',$targetPath) . $_FILES['Filedata']['name'];
   move_uploaded_file($tempFile,$targetFile);
   echo '0'; // Required to trigger onComplete function on Mac OSX (same for linux and        windows as it seems)

   }
   else { // Required to trigger onComplete function on Mac OSX (same for linux and windows as it seems)
   echo '1';
   $video = $_POST[test];
   $textfield = $_POST[textfield];
   echo $video;
   echo $textfield;
   }
  ?>

这里是我需要创建的方式,以便我能够开展这项工作。

  <form id="form" name="form" method="post" enctype="multipart/form-data" action="uploadify/uploadify.php">
  <input id="file_upload" name="file_upload" type="file" />
  <input type="text" name="textfield" id="textfield" />
  </form>

问题在这里,当我使用enctype="multipart/form-data" uploadify.php写给我0时,当我删除enctype="multipart/form-data"给我写信时1.这就是我所需要的。从代码中可以看出,我在uploadify.php的末尾添加了一些愚蠢的代码来测试它。

我认为这不起作用,因为在javascript代码中,我不会在任何地方写入enctype。也许我错了。 我尝试编辑这个:

            var form = document.forms['form'].enctype  = "multipart/form-data"; 

但没有,

我也尝试过:

'onAllComplete': function(event,data) { document.getElementById('form').enctype; document.getElementById('form').submit();},

但又一无所获。欢迎所有帮助...

PS这是测试示例,对于这段代码,我不需要multipart / form-data,但是在测试的项目上,我需要multipart / form-data,因为我正在测试uploadify脚本的小视频上传器,我需要每个视频的封面图片。

1 个答案:

答案 0 :(得分:1)

尝试:

var form = document.forms['form'];
    form.enctype  = "multipart/form-data"; 

而不是

var form = document.forms['form'].enctype  = "multipart/form-data"; 

但是由于你不使用多重上传,我不认为有必要分两步完成(首先发送文件,然后是完整的表格)。 请参阅scriptData - 选项,它允许您同时发送文件和其他数据:

'scriptData'  : {'textfield':$('#textfield').val()}