gpt4 book ai didi

javascript - 无法使用 JS FormData 对象发布视频文件输入

转载 作者:行者123 更新时间:2023-12-03 01:31:54 28 4
gpt4 key购买 nike

我实际上做了很多研究,并尝试了不同的方法来使用 JQuery 的 $.ajax() 上传视频文件。和FormData 。我正在使用 Chrome 和 Firefox 的更新版本,并意识到使用 $.ajax() 上传文件适用于 jQuery 1.6 及更高版本。现在我正在使用 jQuery-3.3.1.js

无论出于什么原因,我仍然无法让它工作。当我回显 $_FILES['myFile']['name']; 时,我得到空数据

view.php

<div class="modal_body">
<form class="container_UserInfo" id="modalForm_uploadVideo">
<label class="modal_label" id="modalLbl_browseVideo">
Select Video
<input type="file" name="myFile" class="modalbtn_browseFiles" id="modalBtn_choose_video_file" value="Select Video" accept="video/*"/><br>
</label>
</form>
</div>

<button class="btn_modalFooter" id="modalBtn_uploadVideo_upload" name="modalBtnName_uploadVideo_upload">
Upload
</button>

view.js

$('#modalBtn_uploadVideo_upload').on('click',function(event){
if(hasInputFileLoaded()){
uploadVideo();
}else{
alert("No file input.");
}
});

function uploadVideo() {
var formData = new FormData();
formData.append('file', $('#modalBtn_choose_video_file')[0].files[0]);
console.log($('#modalBtn_choose_video_file')[0].files[0]); // console displays the selected file info.
$.ajax({
url: 'controller/upload_video.php',
type: 'POST',
data: formData,
processData: false, // tells jQuery not to process the data
contentType: false, // tells jQuery not to set contentType
success: function (data) {
console.log(data);
alert(data);
},
error: function (x, e) {
if (x.status == 0) {
alert('You are offline!!\n Please Check Your Network.');
} else if (x.status == 404) {
alert('Requested URL not found.');
} else if (x.status == 500) {
alert('Internal Server Error.');
} else if (e == 'parsererror') {
alert('Error.\nParsing JSON Request failed.');
} else if (e == 'timeout') {
alert('Request Time out.');
} else {
alert('Unknown Error.\n' + x.responseText);
}
}
});
}

upload_video.php

$myFile = $_FILES['myFile']['name'];
echo "myFile: " . $myFile;

echo "myFile: " . $myFile;显示:

myFile:

这一行:

console.log($('#modalBtn_choose_video_file')[0].files[0]); // console displays the selected file info.

显示所选文件的信息,我确信它不为空。

我不知道缺少什么。它能够获取并运行 upload_video.php 脚本,但在 $_FILES[] 中什么也得不到。

我想重申<form>包含在模态 div 中。不知道和这个问题有没有关系。

请帮忙。如果有任何建议,我将不胜感激。

谢谢。

**** 编辑 ******

这就是我在 Google 开发者工具的 XHR->Headers->Request Payload 中得到的内容。

请求负载

------WebKitFormBoundarybqKoBuiQ9WumYuTo
Content-Disposition: form-data; name="file"; filename="How to Configure Nginx VirtualHost in Ubuntu.mp4"
Content-Type: video/mp4

对于请求 header

Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
Connection: keep-alive
Content-Length: 20360818
Content-Type: multipart/form-data; boundary=----WebKitFormBoundarybqKoBuiQ9WumYuTo
Cookie: PHPSESSID=q669bu6jqodkpqpvu2hructsm7
Host: localhost
Origin: http://localhost
Referer: http://localhost/cai/landingpage.php
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36
X-Requested-With: XMLHttpRequest

我添加了enctype="multipart/form-data" method="post"按照建议和 var_dump($_FILES);var_dump($_POST)但继续获得

NULLarray(0){}

我还替换了myFilefile$_FILES[][]

$myFile = $_FILES['file']['name'];
echo "myFile: " . $myFile;

但没有采取任何措施来解决我的问题。

我还可以进行哪些其他故障排除?

*****编辑结束********

最佳答案

您正在 file 属性中发送文件数据,而不是 myFile,因此您的 PHP 应更改为:

$myFile = $_FILES['file']['name']; // note 'file' here
echo "myFile: " . $myFile;

关于javascript - 无法使用 JS FormData 对象发布视频文件输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51258565/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com