Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用PHP保存文件名未知的文件_Javascript_Php_Audio_Jspsych - Fatal编程技术网

Javascript 使用PHP保存文件名未知的文件

Javascript 使用PHP保存文件名未知的文件,javascript,php,audio,jspsych,Javascript,Php,Audio,Jspsych,我正在做一个在线实验(使用jsPsych库),参与者(每个人都有一个由脚本随机分配的代码号)将记录一些.wav文件。然后,我想上传到服务器,其中包含参与者的代码和与该录制相关的项目编号。每个参与者将创建36个不同的简短.wav文件 它看起来像recorderjs,是我在浏览器端录制音频所需的工具(请参见),但我很难找到创建PHP脚本以保存未知文件名文件所需的信息 以下是相关的javascript: 功能停止录制(主题、项目编号){ 记录器(&R)记录器停止(); console.log('停止

我正在做一个在线实验(使用jsPsych库),参与者(每个人都有一个由脚本随机分配的代码号)将记录一些.wav文件。然后,我想上传到服务器,其中包含参与者的代码和与该录制相关的项目编号。每个参与者将创建36个不同的简短.wav文件

它看起来像recorderjs,是我在浏览器端录制音频所需的工具(请参见),但我很难找到创建PHP脚本以保存未知文件名文件所需的信息

以下是相关的javascript:

功能停止录制(主题、项目编号){
记录器(&R)记录器停止();
console.log('停止记录');
记录器和记录器.exportWAV(函数(blob){
var xhr=new XMLHttpRequest();
xhr.onload=函数(e){
if(this.readyState==4){
log(“服务器返回:”,e.target.responseText);
}
};
var fd=新FormData();
fd.追加(主语+项目编号+“.wav”,blob);
open(“POST”,“upload_wav.php”,true);
xhr.send(fd);
};
记录器。清除();

}
首先,你应该添加一些检查以确保你不会被帖子淹没。最简单的方法是确保帖子来自同一个服务器IP(尽管有几种欺骗方式):

另外,请确保仅在实际收到文件>

if (!$_FILES) {
    http_response_code(400);
    die('File missing');
}
至于文件名问题:您一次只上载一个文件,因此
$\u FILES
将只有一个元素可以使用
current()
检索


首先,你应该添加一些检查以确保你不会被邮件淹没。最简单的方法是确保邮件来自同一个服务器IP(尽管有几种方法可以欺骗):

另外,请确保仅在实际收到文件>

if (!$_FILES) {
    http_response_code(400);
    die('File missing');
}
至于文件名问题:您一次只上载一个文件,因此
$\u FILES
将只有一个元素可以使用
current()
检索


可能使用某种数据库。在文件系统上迭代可能不是那么理想。
$target\u dir=“audio/”
那些双引号无效!您使用文字处理器编写代码吗?澄清一下,我不会重复。每次参与者参与另一个项目时,它都会调用php脚本。因此脚本只保存一个文件,但会运行多次。Re:double quotes--changed。是的,我不知道我在做什么我还没有找到足以帮助我完成所需任务的PHP教程……欢迎您的建议。如果您正在寻找一个像样的免费编辑器,请查看或可能使用某种数据库。在文件系统上进行迭代可能不是那么理想。
$target\u dir=“audio/”
那些双引号无效!您使用文字处理器编写代码吗?澄清一下,我不会重复。每次参与者参与另一个项目时,它都会调用php脚本。因此脚本只保存一个文件,但会运行多次。Re:double quotes--changed。是的,我不知道我在做什么我还没有找到足够的PHP教程来帮助我做我需要的事情…欢迎您的推荐。如果您正在寻找一个像样的免费编辑器,请查看或
$target_dir = 'audio/';
$file = current($_FILES);
$target_file = $target_dir . basename($file['name']);
move_uploaded_file($file['tmp_name'], $target_file);
// why would you do this?
chmod($target_file,0755);