抱歉,如果这可能是一个俗气的问题,但不幸的是我无法更改项目设置。我在 php 页面上有一个表单,它应该将一些文本字段和文件输入发布到 MVC 控制器操作。发布部分有效,我在 ViewModel 中成功接收到文本数据。但是,我不知道如何接收文件(图像,将是 jpg 或 png)。输入类型文件的 ID 和 NAME 是“UserIcon”。
在 ActionResult 中,我使用 HttpPostedFileBase 进行了尝试,如下所示:
public virtual ActionResult RegisterJson(RegistrationModels model, HttpPostedFileBase UserIcon)
但 UserIcon 始终为 NULL。相反,如果我将文件作为RegistrationModels
模型的一部分:
[DisplayName("Ihr Foto")]
public string UserIcon { get; set; }
我收到 curl path:@C:\\Windows\\Temp\\phpA03D.tmp;filename=Penguins.jpg;
作为字符串。
但是从这里我完全不知道接下来要做什么来保存文件。我试图添加到 curl 标题,$header = array("Content-type: multipart/form-data");
但是所有发布的表单字段都是 NULL。
如果有人能指出我正确的方向,我将不胜感激!我想我在这里大停电并且做错了:-S
这是发布到 MVC 操作的 curl 代码:
$postargs = array();
foreach ($_FILES as $param => $file) {
$postargs[$param] = '@' . $file['tmp_name'] . ';filename=' . $file['name'] . ';';
}
$fields_string = "";
//url-ify the data for the POST
foreach($_POST as $key=>$value) {
$fields_string .= $key.'='.$value.'&';
}
$fields_string .= http_build_query($postargs);
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_POST,count($_POST));
curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);
$result = curl_exec($ch);
curl_close($ch);
非常感谢!!
干杯,卡罗琳