jQuery-File-upload:删除时出现 405 错误“方法不允许”
Posted
技术标签:
【中文标题】jQuery-File-upload:删除时出现 405 错误“方法不允许”【英文标题】:jQuery-File-upload: 405 error "method not allowed" on DELETE 【发布时间】:2017-05-22 08:00:26 【问题描述】:我正在使用 Jquery-File-Upload 插件。 加载插件时,我使用以下代码添加已预加载的文件:
var files = [
"name": ""+uploadFileName+"",
// "size":775702,
"type": "audio/ac3",
"url": ""+uploadFile+"",
"deleteUrl": ""+uploadFile+"",
"deleteType": "DELETE"
];
var $form = $('#fileupload');
// Init fileuploader if not initialized
// $form.fileupload();
$form.fileupload('option', 'done').call($form, $.Event('done'), result: files: files);
一切正常 - 插件将文件添加到文件列表,但在这种情况下(手动预加载)DELETE 按钮不起作用并且不会删除文件。
在控制台中我看到错误:DELETE (*url_link*) 405 (Method Not Allowed)"
。
有谁知道如何解决这个问题,这是什么问题?
附:我不会以两种方式手动创建这些删除按钮。但是上传新文件时我无法删除文件,尝试删除旧文件时也无法删除。
任何帮助都会有所帮助!
【问题讨论】:
你需要包含一些代码。 【参考方案1】:这个插件我也遇到了同样的问题,花了将近一个月的时间才找到解决办法,而且很简单。
更改UploadHandler.php
文件行:
'user_dirs' => false
'delete_type' => 'DELETE'
到以下:
'user_dirs' => true
'delete_type' => 'POST'
【讨论】:
【参考方案2】:我找到了答案。
在 API 文档中没有关于 deleteUrl
参数的任何信息,所以我认为 url
和 deleteUrl
是相同的链接。
要修复405 error
并使删除按钮可用,您需要正确配置它(在手动预加载的情况下)。 PHP代码如下,但您可以理解整个过程并将其实现为其他语言:
$settings_location_folder = "materials/";
$actual_location_folder = "materials/files"; //plugin requires such structure
$url_link_from_db = "filename.mp3";
$url = $actual_location_folder."".$url_link_from_db; //url = "materials/files/filename.mp3";
$deleteUrl = $settings_location_folder."index.php?file=".$url_link_from_db; //deleteUrl = "materials/index.php?file=filename.mp3";
因此,如果您有405 error
并单击删除按钮 - 检查deleteUrl
参数并在文件当前所在文件夹内的文件链接之前添加index.php?file=
。
如果您将来遇到同样的问题,希望它可以节省您的时间。
【讨论】:
以上是关于jQuery-File-upload:删除时出现 405 错误“方法不允许”的主要内容,如果未能解决你的问题,请参考以下文章
PHP:jQuery-File-Upload任意上传/RCE/越权删除文件漏洞分析
使用 NSFetchedResultsController 时出现奇怪的删除行为
删除最后一个 UICollectionViewCell 时出现 NSRangeException