首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >角提交表格数据

角提交表格数据
EN

Stack Overflow用户
提问于 2014-11-03 17:37:13
回答 1查看 1K关注 0票数 0

我使用ng流库将图像加载到服务器,在用户拖动和删除图像之后,我可以将HTML 5文件图像下载到我的控制器,我需要将它与诸如货币、主题等ohter参数一起下载到服务器上。我搜索并发现最好的方法是转换成json格式的数据并使用POST方法发送。当我从服务器获得响应时,我看到表单数据包含主题,但不包含图像。有什么不对的?

在下面的代码url是真实的,您可以尝试获得您自己的响应。

角码:

代码语言:javascript
复制
 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代码:

代码语言:javascript
复制
$form = file_get_contents("php://input");

echo "Form: ";  print_r($form);

var_dump of $_FILES

代码语言:javascript
复制
"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)
  }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-03 20:03:00

您应该将表单数据发送到控制器,尝试如下:

数据:{ subject: subject,data: formData}

此外,您还需要首先定义formData,以便在最后通过$http .Try发送以下内容:

代码语言:javascript
复制
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部分,您可以使用我编写的函数:

代码语言:javascript
复制
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的上传位置--您可以轻松地使用它,如下所示:

代码语言:javascript
复制
uplFile($_POST['file']);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26719750

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档