maloun
(Victor)
martie 27, 2017, 5:51pm
1
Buna, am o problema si sper ca voi gasi un raspuns aici. Am urmatorul cod:
let headers = new Headers();
headers.append('Content-Type', 'multipart/form-data');
let options = new RequestOptions({ headers: headers });
let fd = new FormData();
fd.append('title', portofolio.title);
fd.append('description', portofolio.description);
fd.append('images', portofolio.images[0]);
return this.http.post('admin/portofolio/add', fd, options).map(res => res.json());
$content = $request->getContent();
$jsonDecoded = json_decode($content);
//si asa am incercat
$request->request->all();
$request->request->get('title')
------WebKitFormBoundaryZUTARpqVYtBlXrKs
Content-Disposition: form-data; name=“title”
Title
------WebKitFormBoundaryZUTARpqVYtBlXrKs
Content-Disposition: form-data; name=“description”
Desc
------WebKitFormBoundaryZUTARpqVYtBlXrKs
Content-Disposition: form-data; name=“images”; filename="20160220_023626-COLLAGE.jpg"
Content-Type: image/jpeg
Si nicidecum nu pot luat datele in Symfony.
Va multumesc
redecs
(Mihai Nica)
martie 27, 2017, 7:32pm
2
Nu merge pentru că încarci fișiere, ceea ce îtî transformă request-ul într-unul multi-part (de asta request-ul tău nu este JSON, cum te așteptai).
Poți să încerci cu $request->getContents()
sau varianta plain PHP $data = file_get_contents('php://input');
serghei
(Serghei Amelian)
martie 27, 2017, 7:51pm
3
Eu in cazuri de genul asta folosesc FileReader: https://developer.mozilla.org/en/docs/Web/API/FileReader
$(document).ready(function()
{
var file_selector = $('<input type="file" />');
file_selector.on("change", function(event)
{
if(this.files.length)
{
var file = this.files[0];
var reader = new FileReader();
reader.onload = function(event)
{
$.post("campanie.php", { cmd: "upload", data: event.target.result }, function(response)
{
alert(response);
});
$(file_selector).val("");
}
reader.readAsDataURL(file);
}
});
$("#incarca").click(function()
{
file_selector.click();
});
});
In capatul dinspre server “decodezi” datele cu file_get_contents: http://php.net/manual/ro/function.file-get-contents.php
$filename = basename($_POST["title"]);
$bin_data = file_get_contents($_POST["data"]);
file_put_contents("/tmp/$filename", $bin_data);
1 Like
maloun
(Victor)
martie 28, 2017, 9:01am
4
Am rezolvat intrebarea, multumesc mult. Mai este una care nu intelege,
return new JsonResponse([
'request' => json_decode($request->getContent()),
'files' => $request->files,
'post' => $_POST,
'f' => $_FILES
]);
imi arata $_FILES si $_POST, dar $request->files imi da null si nu inteleg din ce cauza
serghei
(Serghei Amelian)
martie 28, 2017, 10:27am
5
Pai daca nu ne spui cum ai “rezolvat” e putin probabil sa intelegem noi cauza.
Cand fac API debugging de obicei cer:
endpoint
full payload with HTTP headers and everything (e.g. attached image or file)
the code that is being hit + middleware(s) if the case
framework/libraries versions
browser version + does it work via curl? (de n-ori mi s-a intamplat ca un API endpoint nu mergea pt. ca se folosea o extensie obscura de chrome pt. testarea lui)