Here is a bunch of my backend code that I have used to upload a file.
$app->post('/upload/{studentid}', function(Request $request, Response $response, $args) {
$uploadedFiles = $request->getUploadedFiles();
// handle single input with single file upload
$uploadedFile = $uploadedFiles['filename'];
if ($uploadedFile->getError() === UPLOAD_ERR_OK) {
$extension = pathinfo($uploadedFile->getClientFilename(), PATHINFO_EXTENSION);
// ubah nama file dengan id buku
$filename = sprintf('%s.%0.8s', $args["studentid"], $extension);
$directory = $this->get('settings')['upload_directory'];
$uploadedFile->moveTo($directory . DIRECTORY_SEPARATOR . $filename);
// simpan nama file ke database
$sql = "UPDATE feepaid SET filename=:filename WHERE studentid=:studentid";
$stmt = $this->db->prepare($sql);
$params = [
":studentid" => $args["studentid"],
":filename" => $filename
];
if($stmt->execute($params)){
// ambil base url dan gabungkan dengan file name untuk membentuk URL file
$url = $request->getUri()->getBaseUrl()."/Upload/".$filename;
return $response->withJson(["status" => "success", "data" => $url], 200);
} else {
return $response->withJson(["status" => "failed", "data" => "0"], 200);
}
}
});
When i tested using postman its working but im quite new to Angular. When i implement the api in my Angular apps its not working
And this is my code that i use to upload the file from angular application
fileChange(event) {
const fileList: FileList = event.target.files;
if (fileList.length > 0) {
const file: File = fileList[0];
const formData: FormData = new FormData();
formData.append('uploadFile', file, file.name);
const headers = new Headers();
/** In Angular 5, including the header Content-Type can invalidate your request */
// headers.append('Content-Type', 'multipart/form-data');
// headers.append('Accept', 'application/json');
const id = sessionStorage.getItem('userId');
// const options = new RequestOptions({ headers: headers });
this.http.post('http://localhost:8080' + '/upload/' + id , formData)
.subscribe(
data => console.log('success'),
error => console.log(error)
);
}
}
And this is my example of testing using Postman
Why is it i have error? It seems like my file is not send to the backend and its return null value. Anyone can help me? Thank you
当您将键作为filename
检索时,您需要发送表单数据的确切键值对,因此请尝试更改:
formData.append('filename', file, file.name);
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.