我正在制作一个用于上传文件(视频或图片)的ajax功能:
<link id="pagestyle" rel="stylesheet" type="text/css" href='css/styles-white.css'>
在我的hisoka_drop.php中:
function upload_file(file)
{
//create xhr object
xhr = new XMLHttpRequest();
//initiate request
xhr.open('post','hisoka_drop.php',true);//true for asynchronous
//set headers
xhr.setRequestHeader('Content-Type',"multipart/form-data");
xhr.setRequestHeader('X-File-Name',file.fileName);
xhr.setRequestHeader('X-File-Size',file.fileSize);
xhr.setRequestHeader('X-File-Type',file.fileType);
//send the file
xhr.send(file);
}
我的问题很简单,如何获取我之前设置的ajax标头,以获取我要上传到服务器的文件的真实文件名... 在此先感谢... :)
注意: 我试图列出$ _SERVER中的所有标题,如下所示:
<?php
$str =file_get_contents('php://input');
$filename = ; //How to get ajax header about file.fileName;
$path = 'upload/'.$filename;
file_put_contents($path,$str);
echo $path;
?>
从这个列表中,我找不到我发送的任何标题,比如FILE_NAME,FILE_SIZE和FILE_TYPE,那么这里的问题是什么? 再次感谢...
答案 0 :(得分:4)
由于您的自定义HTTP标头被调用X-File-Name
,只需将其大写,将破折号转换为下划线,然后在HTTP_
前面添加一个密钥,用于在$_SERVER
中找到它超全局。例如:
$filename = $_SERVER['HTTP_X_FILE_NAME'];
有关详细信息,请参阅this answer。
答案 1 :(得分:3)
此外,从5.4.0开始,您可以使用apache_request_headers()
。它将当前请求中的所有HTTP请求标头作为数组返回。
在早期版本中,此功能仅在PHP安装为apache模块时才有效。
用法如下:
$headers = apache_request_headers();
echo $headers['X-File-Name'];