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"> </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)
})
}