我正在开设类似YouTube的网站,但我的公司。我想做的是让用户自己上传照片和视频(而不是每次都问我)。
我遇到了视频上传部分的问题,我使用相同的技术进行照片上传,效果很好!
这是我的代码:
$(function () {
$('#my_form').on('submit', function (e) {
e.preventDefault();
var $form = $(this);
var formdata = (window.FormData) ? new FormData($form[0]) : null;
var data = (formdata !== null) ? formdata : $form.serialize();
$.ajax({
url: 'MgtImportVideo.php',
type: 'POST',
contentType: false,
processData: false,
dataType: 'html',
data: data, //data = serialized form
xhr: function(){
//do stuff like showing percentage progress
},
beforeSend : function (){
//do some stuff like incrementing variables
},
success: function (response) {
//do other stuff like diplaying error/sucess messages
}
});
});
我将contentType
和processData
设为false,因为我听说上传是必需的。
实际的视频文件存储方式如下:
$('#my_form').find('input[name="fileVideo[]"]').on('change', function (e) {
var files = $(this)[0].files;
var urivideo=false;
urivideo=window.URL.createObjectURL(files[0]);
//Then do some other stuff (I guess not really important here)
});
然后在我的MgtImportVideo.php
文件中,$ _POST和$ _FILES没有获取任何数据并显示为空数组。
有人可以帮我解决这个问题吗?
答案 0 :(得分:0)
要使用ajax
上传文件,请使用formData
代替serialized form
数据serialize encode a set of form elements as a string for submission
。要上传文件,您必须制作一个formData对象并将文件附加到该文件中并提交该formData对象。
例如:
var file_data = $('#pic').prop('files')[0];
var form_data = new FormData();
form_data.append('file', file_data);
$.ajax({
url : 'upload.php', // point to server-side PHP script
dataType : 'text', // what to expect back from the PHP script, if anything
cache : false,
contentType : false,
processData : false,
data : form_data,
type : 'post',
success : function(output){
alert(output); // display response from the PHP script, if any
}
});
答案 1 :(得分:0)
添加成功,如果数据返回true,那么您可以在成功函数中执行任何操作
var data_ser = (formdata !== null) ? formdata : $form.serialize();
$.ajax({
url: 'MgtImportVideo.php',
type: 'POST',
contentType: false,
processData: false,
dataType: 'html',
data: data_ser, //data = serialized form
success: function(return_data){ //data return in ajax call.
if(return_data){
alert('success'); //if data returns true
}
}
});