我想从服务器中删除已通过Dropzone上传的文件。但是,只有缩略图已被删除。服务器中的文件未被删除。我在控制台出错。http://localhost:8000/upload/delete 500(内部服务器错误) )'
我在控制器中的上传方法
public function upload(Request $request){
$file= $request->file('file');
$filename=$file->getClientOriginalName();
$upload='uploads/topics';
$file->move($upload, $filename);
}
Dropzone脚本文件。
Dropzone.options.addImages = {
maxFilesize: 8,
addRemoveLinks: true,
dictRemoveFile: 'Remove',
init:function() {
this.on("removedfile", function(file) {
$.ajax({
type: 'POST',
url: 'upload/delete',
data: {id: file.name},
dataType: 'html',
success: function(data){
var rep = JSON.parse(data);
}
});
} );
},
}
我在控制器中的删除方法。
public function delete(Request $request){
$filename = $request->input('id');
unlink('uploads/topics'.$filename);
}
答案 0 :(得分:1)
我可以立即看到两个问题:
在delete
控制器方法中,您尝试访问$request
,但尚未注入。
请求input
方法为小写。
我相信这更接近您的需求:
public function delete(Request $request){
$filename = $request->input('id');
unlink('uploads/topics/' . $filename);
}
一些注意事项:
每当您收到“内部服务器错误”时,表示您需要检查错误日志。您的某个日志文件中有详细信息会告诉您确切的错误。
现在,您的删除方法可以允许用户删除您可能不希望他们删除的内容。我可以轻松地将文件名发布到该端点,并从topics
文件夹中删除任何内容。
更危险的是,此代码似乎存在进行遍历攻击的风险。有关详细信息,请参阅此处:https://www.owasp.org/index.php/Path_Traversal