jQuery-File-Upload插件 - 501(未实现)

时间:2014-08-25 14:30:32

标签: php jquery jquery-file-upload

这个问题是关于:https://github.com/blueimp/jQuery-File-Upload

这个问题非常具体。我没有开发代码所以我不知道什么时候出错了。

我将整个存储库复制到setup后运行 PHP 5.3 Windows网络主机,然而,使用Firefox和Chrome访问演示页,我可以上传但不能删除。 Windows服务器,仍在运行 IIS6

控制台已记录:

Firefox:
no element found

Chrome:(1st click)
Failed to load resource: the server responded with a status of 501 (Not Implemented) :http://webhost/folder/jquery-file-upload/server/php/?file=xxx.jpg

Chrome:(2nd click)
DELETE http://webhost/folder/jquery-file-upload/server/php/?file=xxx.jpg 501 (Not Implemented) 
                                  jquery.min.js:4
send                              jquery.min.js:4
n.extend.ajax                     jquery.min.js:4
$.widget.options.destroy          jquery.fileupload-ui.js:377
$.Widget._trigger                 jquery.ui.widget.js:489
$.widget._deleteHandler           jquery.fileupload-ui.js:537
(anonymous function)              jquery.ui.widget.js:105
handlerProxy                      jquery.ui.widget.js:406
n.event.dispatch                  jquery.min.js:3
r.handle                          jquery.min.js:3

与此php:1相关联:

{"file":{"name":"xxx.png","size":14339,"url":"http:\/\/webhost\/folder\/jquery-file-upload\/server\/php\/files\/xxx.png","thumbnailUrl":"http:\/\/www.newman.edu.hk\/appreciate\/jquery-file-upload\/server\/php\/files\/thumbnail\/xxx.png","deleteUrl":"http:\/\/webhost\/folder\/jquery-file-upload\/server\/php\/?file=xxx.png","deleteType":"DELETE"}}

我试图检查UploadHandler.php,但整个文件对我来说似乎很神秘x_x

3 个答案:

答案 0 :(得分:1)

无论出于何种原因报告。我用最新的库再次尝试了它并且它有效。抱歉,如果您目前感到沮丧,我无法提供更多详细信息或帮助您,因为我从未录制过它们。 :(

无论如何,这就是我解决问题的方法。

我很遗憾地说其他答案对我不起作用而且我不记得发表评论,因为我无法在家中访问服务器并且在摆弄它之后忘记了。请原谅我:P

P.S。我也切换到了Dropzone.js,因为jQuery文件上传太难以使用了。我个人认为Dropzone.js允许更多自由,因为它不需要任何依赖项。

以下是他们将Dropzone.js主题化为jQuery文件上传的方式:http://www.dropzonejs.com/bootstrap.html

答案 1 :(得分:0)

我刚刚在这个问题上丢失了几个小时...也可以上传而不是删除...我创建了一个自定义的ajax函数来手动删除文件...一旦我试图删除501错误...我在UploadHandler.php

中找到了这个
// Set the following option to 'POST', if your server does not support
'delete_type' => 'DELETE',

我的VPS服务器不允许DELETE请求...一旦我将此行更改为' POST',它就不再有501错误了......

答案 2 :(得分:0)

我已经通过自己的删除按钮代码和Ajax脚本解决了这个问题。

HTML

替换它:

<button type="button" class="btn btn-danger delete">
    <i class="glyphicon glyphicon-trash"></i>
    <span>Delete</span>
</button>
<a href="javascript:void(0)" class="delete" data-type="{%=file.deleteType%}" data-url="{%=file.deleteUrl%}"{% if (file.deleteWithCredentials) { %} data-xhr-fields='{"withCredentials":true}'{% } %}>
    <i class="fa fa-trash"></i>
</a>

有了这个:

<button type="button" class="btn btn-danger delete_us">
   <span>Delete</span>
</button>
<a href="javascript:void(0)" class="delete_me" data-name="{%=file.name%}" data-url="{%=file.url%}" data-thumb="{%=file.thumbnailUrl%}">
   <i class="fa fa-trash"></i>
</a>

的jQuery

//Delete images on select all button
jQuery(document).on('click', '.delete_us', function() {
    var total = jQuery('[name="delete"]:checked').each(function() {
        jQuery(this).parent().find('.delete_me').trigger('click');
    });
});

 //Delete single image
jQuery(document).on('click', '.delete_me', function() {
    jQuery(this).parents('.template-download').addClass('active');
    var data_thumb = jQuery(this).data('thumb');
    data_thumb = data_thumb.split('thumbnail');
    data_thumb = data_thumb[0]+'thumbnail/';

    var data_name = jQuery(this).data('name');
    var data = data_thumb+data_name;

    jQuery.ajax({
        data  : { dataThumb: data },
        url   : "<?php echo JURI::root().'ajax.php' ?>",
        type  : 'post',
        success : function(data) {
            jQuery('.template-download.active').fadeOut(500);

        }
    });
});

AJAX文件

<?php
    //Ajax file
    $data = $_POST;

    if($data['dataThumb']) {
        deleteMe($data['dataThumb']);
    }

    function deleteMe($data) {

        $data = str_replace(JURI::root(), JPATH_BASE.'/', $data);
        $thumb = str_replace('thumbnail/', '',$data);
        unlink($data);
        unlink($thumb);
    }
?>

注意: 请使用适当的网址替换代码中的Joomla标准网址。

HTTP&#39;删除&#39; jQuery-File-Upload Plugin 的请求在我的项目中也没有用,所以我制作了自定义代码来删除图片。我希望这能解决你的问题。