我想通过windows命令行发送一个带有curl的文件到yi2控制器。我的命令行脚本是这样的:
curl -X POST -F "file=@G:\file.txt" http://file.localhost/file-siakadbeta/upload
我的yii2控制器是这样的:
class FileSiakadbetaController extends Controller
{
public function actionUpload()
{
if ($_FILES && isset($_FILES['file'])) {
$target_dir = "uploads/"; // Replace with your desired upload directory
$target_file = $target_dir . basename($_FILES['file']['name']);
// Check if the file already exists
if (file_exists($target_file)) {
return "File already exists.";
} else {
// Move the uploaded file to the target directory
if (move_uploaded_file($_FILES['file']['tmp_name'], $target_file)) {
return "File uploaded successfully.";
} else {
return "File upload failed.";
}
}
} else {
return "No file uploaded.";
}
}
}
问题是,我得到了回应
Bad Request (#400)
我尝试将curl命令发送到普通的php代码(不使用yi2框架),上传代码正常工作。
有什么需要帮忙的吗?
1条答案
按热度按时间au9on6nz1#
错误请求响应可能是POST请求中缺少CSRF令牌的结果。
默认情况下,Yii2期望所有POST请求包含有效的CSRF令牌。您可以通过将其
$enableCsrfValidation
属性设置为false
来禁用此功能。例如:或者,如果您只想为特定操作禁用CSRF验证,可以在
beforeAction()
回调中执行。在文档中查看有关CSRF保护的更多信息。