我使用ng流库将图像加载到服务器,在用户拖动和删除图像之后,我可以将HTML 5文件图像下载到我的控制器,我需要将它与诸如货币、主题等ohter参数一起下载到服务器上。我搜索并发现最好的方法是转换成json格式的数据并使用POST方法发送。当我从服务器获得响应时,我看到表单数据包含主题,但不包含图像。有什么不对的?
在下面的代码url是真实的,您可以尝试获得您自己的响应。
角码:
var file = $flow.files[0];
$http({
method: 'POST',
url: "http://yuppi.com.ua/server/rest/add.php?key=453sdfg3t&action=add",
headers: { 'Content-Type': false },
transformRequest: function (data) {
var formData = new FormData();
formData.append("subject", angular.toJson(data.subject));
formData.append("file", data.file);
return formData;
},
data: { subject: subject, file: file}
}).
success(function (data, status, headers, config) {
alert(data);
}).
error(function (data, status, headers, config) {
alert(data);
});PHP代码:
$form = file_get_contents("php://input");
echo "Form: "; print_r($form);var_dump of $_FILES
"array(1) {
["photo"]=>
array(5) {
["name"]=>
string(14) "gradient-2.png"
["type"]=>
string(9) "image/png"
["tmp_name"]=>
string(14) "/tmp/phpY8nqji"
["error"]=>
int(0)
["size"]=>
int(442567)
}
}发布于 2014-11-03 20:03:00
您应该将表单数据发送到控制器,尝试如下:
数据:{ subject: subject,data: formData}
此外,您还需要首先定义formData,以便在最后通过$http .Try发送以下内容:
var file = $flow.files[0];
var formData = new FormData();
$http({
method: 'POST',
url: "http://yuppi.com.ua/server/rest/add.php?key=453sdfg3t&action=add",
headers: { 'Content-Type': false },
transformRequest: function (data) {
formData.append("subject", angular.toJson(data.subject));
formData.append("file", data.file);
return formData;
},
data: { subject: subject, data: formData}
}).
success(function (data, status, headers, config) {
alert(data);
}).
error(function (data, status, headers, config) {
alert(data);
});对于php部分,您可以使用我编写的函数:
function uplFile($fn,$path='upload/'){
$delim = explode(';base64,',$fn);
$type = str_replace('data:','',$delim[0]);
switch ($type) {
case "image/gif":
$type = '.gif';
break;
case "image/jpeg":
$type = '.jpg';
break;
case "image/png":
$type = '.png';
break;
case "image/bmp":
$type = '.bmp';
break;
}
$data = base64_decode($delim[1]);
$file = uniqid() .$type;
$success = file_put_contents($path.$file, $data);
return $file;
}该函数将formData()内容作为第一个参数,并获取第二个parameter.For的上传位置--您可以轻松地使用它,如下所示:
uplFile($_POST['file']);https://stackoverflow.com/questions/26719750
复制相似问题