Javascript 如果使用ajax jquery file upload上传文件,如何在php中获取上传的文件名
这是一个简单的文件上传脚本。我只需要在php部分中上传的文件名,因为我需要上传的文件[及其路径],以便将其插入数据库。 这里有一个脚本 index.htmlJavascript 如果使用ajax jquery file upload上传文件,如何在php中获取上传的文件名,javascript,php,jquery,ajax,file-upload,Javascript,Php,Jquery,Ajax,File Upload,这是一个简单的文件上传脚本。我只需要在php部分中上传的文件名,因为我需要上传的文件[及其路径],以便将其插入数据库。 这里有一个脚本 index.html <form enctype="multipart/form-data" id="form1"> <input name="file" type="file" id="id1" /> <input type="button" value="Upload" /> </form> &
<form enctype="multipart/form-data" id="form1">
<input name="file" type="file" id="id1" />
<input type="button" value="Upload" />
</form>
<progress></progress>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>
$(':file').on('change', function() {
var file = this.files[0];
if (file.size > 10024000000) {
alert('max upload size is 1k')
}
// Also see .name, .type
});
</script>
<script>
$(':button').on('click', function() {
$.ajax({
// Your server script to process the upload
url: 'upload.php',
type: 'POST',
// Form data
data: new FormData($('form')[0]),
// Tell jQuery not to process data or worry about content-type
// You *must* include these options!
cache: false,
contentType: false,
processData: false,
// Custom XMLHttpRequest
xhr: function() {
var myXhr = $.ajaxSettings.xhr();
if (myXhr.upload) {
// For handling the progress of the upload
myXhr.upload.addEventListener('progress', function(e) {
if (e.lengthComputable) {
$('progress').attr({
value: e.loaded,
max: e.total,
});
}
} , false);
}
return myXhr;
},
});
});
</script>
$(':file')。在('change',function()上{
var file=this.files[0];
如果(file.size>1002400000){
警报('最大上载大小为1k')
}
//另请参见.name、.type
});
$(':button')。在('click',function()上{
$.ajax({
//处理上载的服务器脚本
url:'upload.php',
键入:“POST”,
//表单数据
数据:新FormData($('form')[0]),
//告诉jQuery不要处理数据或担心内容类型
//您*必须*包括这些选项!
cache:false,
contentType:false,
processData:false,
//自定义XMLHttpRequest
xhr:function(){
var myXhr=$.ajaxSettings.xhr();
if(myXhr.upload){
//用于处理上载的进度
myXhr.upload.addEventListener('progress',函数(e){
if(如长度可计算){
$('progress').attr({
值:e.loaded,
马克斯:e.total,
});
}
},假);
}
返回myXhr;
},
});
});
upload.php
<?php
move_uploaded_file($_FILES['file']['tmp_name'], 'uploads/'.$_FILES['file']['name']);
$name = $_FILES['file']['tmp_name'];
echo $name;//i tried this but i know as i uploaded file using ajax it will not work
?>
我想您可以在php代码中获得路径 你喜欢这样吗
$info = pathinfo($_FILES['userFile']['name']);
$ext = $info['extension']; // get the extension of the file
$newname = "newname.".rand(0,999).$ext;
$target = 'images/'.$newname;
move_uploaded_file( $_FILES['userFile']['tmp_name'], $target)
这里$target包含可以存储在数据库中的文件路径。我想您可以在php代码中获得路径 你喜欢这样吗
$info = pathinfo($_FILES['userFile']['name']);
$ext = $info['extension']; // get the extension of the file
$newname = "newname.".rand(0,999).$ext;
$target = 'images/'.$newname;
move_uploaded_file( $_FILES['userFile']['tmp_name'], $target)
此处$target包含可存储在数据库中的文件路径。要实现suces函数,请使用此代码 JS: PHP: 如果要发回多个值,请使用Json encode发回数据 代码: PHP: JS:
注意,有时ajax会误解返回的数据。要避免此问题,请声明您希望接收的数据类型。要实现suces函数,请使用此代码 JS: PHP: 如果要发回多个值,请使用Json encode发回数据 代码: PHP: JS:
注意,有时ajax会误解返回的数据。要避免此问题,请声明您希望接收的数据类型。您的问题与您从ajax发送和接收数据的方式有关。您必须创建一个success函数来在ajax中接收数据。由于您使用Jquery ajax上载文件,因此将无法在$\u FILES变量中获取该文件。文件将被发送一个二进制数据到$\u POST变量中。您应该使用file\u put\u contents()函数将内容写入文件。例如,
file\u put\u contents('img.jpg',$\u POST['file'])代码>我也尝试了下面提到的php代码。在该代码中,我正在打印$\u POST。它也不起作用。如果在$\u POST中没有得到任何东西,那么Ajax代码中就有问题。如果有任何错误,那么文件将不会上载。您的问题与您从Ajax发送和接收数据的方式有关。您必须创建一个success函数来在ajax中接收数据。由于您使用Jquery ajax上载文件,因此将无法在$\u FILES变量中获取该文件。文件将被发送一个二进制数据到$\u POST变量中。您应该使用file\u put\u contents()函数将内容写入文件。例如,file\u put\u contents('img.jpg',$\u POST['file'])代码>我也尝试了下面提到的php代码。在该代码中,我正在打印$u POST。它也不起作用。如果在$u POST中没有得到任何东西,那么Ajax代码中就有问题。如果有任何错误,那么文件将不会上载。是的,在编写成功函数后,我可以看到输出语句。我正在获取path alsoThank你写了这么多成功函数后,我可以看到输出语句。我得到的路径也非常感谢你much@Manasa很高兴听到我们的问题得到解决。非常感谢much@Manasa很高兴听到我们的问题得到解决。
move_uploaded_file($_FILES['file']['tmp_name'], 'uploads/'.$_FILES['file']['name']);
$name = $_FILES['file']['tmp_name'];
echo $name;
move_uploaded_file($_FILES['file']['tmp_name'], 'uploads/'.$_FILES['file']['name']);
$name = $_FILES['file']['tmp_name'];
$path = 'uploads/'.$_FILES['file']['name'];
echo json_encode(array(
'name'=> $name,
'path'=> $path
));
...
success: function(data){
alert("Name: "+data.name);
alert("Path: "+data.path);
}