PHP 升级后无法使用 uploadify 上传文件(5 -> 7)

问题描述 投票:0回答:1

Codeigniter 版本为 3.1.13。 PHP 版本为 7.4。

我没有创建这个网站,但我必须再维护这个旧网站一年。我的主机最近将 PHP 从 5.4 升级到 7.x,从那时起,我无法再使用 uploadify 在我的 codeignter 站点中上传文件。它用于显示一个文件

<input>
,允许您选择和上传文件。自从升级之后,输入就丢失了。在开发工具中检查站点显示输入在那里,但它具有内联样式,并附加了
display:none

<input id="userfile" name="userfile" type="file" style="display: none;">

我已经搜索了所有的 javascript 文件、控制器以及所有寻找应用这种样式的地方的东西。源代码没有style属性。

<div class="upload-container">
    <?= form_open_multipart('upload/do_upload', array('id' => 'img-upload')); ?>
    <fieldset>
        <legend>Upload an Image</legend>
        <h5 class="upload_h5">Upload Images:</h5>
        <?= image_asset('bg_no_img.gif', '', array('class' => 'pad_10' . $image_class)); ?>
        <input id="userfile" name="userfile" type="file" />
        <p><a class="btn_upload" rel="userfile" href="#">Upload</a> <a class="btn_clear" rel="userfile"
                href="#">Clear Queue</a></p>
    </fieldset>
    <span class="clearFix">&nbsp;</span>
    </form>
</div>

我相当确定这与 php 升级有关,但我不确定为什么或如何修复。这是上传功能:

$('#userfile').uploadify({
    'uploader': global.base + 'assets/_js/uploadify.swf',
    'script': global.base + 'upload/do_upload',
    'scriptData': {
        'type': global.section
    },
    'cancelImg': global.base + 'assets/_images/cancel.png',
    'buttonImg': global.base + 'assets/_images/bt-browse.gif',
    'auto': false,
    'multi': true,
    'scriptAccess': 'always',
    'wmode': 'transparent',
    'fileExt': '*.jpg;*.gif;*.png',
    'fileDesc': 'image files',
    'onSelectOnce': function() {
        $('#img-upload a.btn_upload, #img-upload a.btn_clear').show();
    },
    'onCancel': function(e, qID, f, d) {
        if (d.fileCount == 0) $('#img-upload a.btn_upload, #img-upload a.btn_clear').hide();
    },
    'onComplete': add_pics,
    //'onError' : show_error,
    'onAllComplete': function() {
        $.post(global.base + 'process/keep_login', { user : global.email });
        $('#img-upload a.btn_upload, #img-upload a.btn_clear').hide();
    }
});

我使用 php 已经很多年了,而且我个人从未使用过 uploadify。我错过了什么吗?我无法使用我的主机降级回 php 5。为什么此输入会应用

display:none
的样式属性?

编辑:我注意到

uploadify
函数引用了
assets/_js/uploadify.swf
,即 flash。我猜由于不再支持闪存,这就是它无法工作的原因。有简单的替代方法吗?我想我不必更改我的 doUpload 函数,只需以不同的方式管理输入即可?

编辑:使用开发工具,我从输入中删除了

display:none
样式,当我尝试选择文件并单击上传时,出现错误:
/assets/_js/admin.js
。看起来像这样:

$('a.btn_upload').click(function() {
    var up_action = $(this).attr('rel');
    $('#' + up_action).uploadifyUpload();  /* this is line 270 */
    return false;
});

.uploadifyUpload
函数位于
jquery.upload.js
文件中,如下所示:

uploadifyUpload: function(b) {
  a(this).each(function() {
    document.getElementById(a(this).attr("id") + "Uploader").startFileUpload(b, false)
  })
}
php jquery uploadify
1个回答
0
投票

uploadify 的旧版本依赖于Flash。当浏览器没有 Flash 支持(当前所有浏览器均如此),则隐藏输入元素。那个行为 描述于此处

这意味着您的文件上传功能已经被破坏了一段时间,并且不是由于 PHP 升级所致。

修复此问题的解决方案是使用 uploadify 的新版本,它基于 在 HTML5 上。不过,您需要调整您的代码。

© www.soinside.com 2019 - 2024. All rights reserved.