我有一个页面,我使用此代码将输入类型=文件的图像上传到图像标记
$('#profile-image-upload').change( function(event) {
var path = URL.createObjectURL(event.target.files[0]);
$("#image").attr('src',URL.createObjectURL(event.target.files[0]));
这给了我一个像blob这样的路径的bolb数据:http://localhost:8080/467d02c9-0af0-448a-a239-69e8d4037dd1。我的图像存储在路径变量
中保存的blob数据中现在我也希望这个图像文件保存在我的服务器目录中,并且我使用ajax将其发送到我的服务器
var ajax;
if (window.XMLHttpRequest) // For modren Browsers
ajax=new XMLHttpRequest();
else
ajax=new ActiveXObject("Microsoft.XMLHTTP"); // For IE5 & IE8
ajax.open("POST","../UploadImg.php",true);
ajax.setRequestHeader("Content-type","application/x-www-form-urlencoded");
var data= "path="+path+"&type="+user+"&id="+id+"&extent="+extent;
//path = blob data
//user = user name
//id = user id
//extent = extension of image
ajax.onreadystatechange=function()
{
if (ajax.readyState==4 && ajax.status==200){
alert(ajax.responseText);
}
}
ajax.send(data);
});
我的服务器端编码是
$img_ff = $_POST["path"]; // blob path
$user = $_POST["type"];
$id = $_POST["id"];
$extension = $_POST["extent"];
$dst_img= $user.$id.".".$extention; // for example user17.png
$dst_path= "localhost:8080/live4others/images/";
$dst_cpl = $dst_path . $dst_img;
if(move_uploaded_file($dst_cpl, $img_ff)){
echo "yes";
}else{
echo "error";
}
if( file_put_contents( $img_ff, $dst_cpl)){
echo "yes";
}else{
echo "error";
}
这两种方法都不起作用。请告诉我我在哪里做错了。他们给出错误并说给定路径无效。
答案 0 :(得分:0)
你可以试试这个。我使用相同但使用 blob 只是在提交之前预览图像/视频。
<强> Jquery的强>
$('#<formId>').on('submit', function(e) {
e.preventDefault();
$.ajax({
url: "../UploadImg.php",
type: "POST",
data: new FormData(this),
dataType: "json",
contentType: false,
cache: false,
processData:false,
success: function(response){
console.log(response);
},
error : function (jqXHR, textStatus, errorThrown) {
}
});
});
PHP - UploadImg.php
$tmpFile = $_FILES['<fileElementName>'];
$absolutePathOfdestinationFolder = '/var/www/<projectDocRoot>/images/'.$user.$id.".".$extention;
if(move_uploaded_file($tmpFile['tmp_name'], $absolutePathOfdestinationFolder)){
echo "yes";
}else{
echo "error";
}