Dears,
i have created application to sync exchange email with Communications and it is successfully works now i need to upload attachments to the communication record using Rest API how can i do that ?
Dears,
i have created application to sync exchange email with Communications and it is successfully works now i need to upload attachments to the communication record using Rest API how can i do that ?
Make a POST request to / with form params below,
cmd = uploadfile
dt = DocType to attach (Communication in your case)
dn = Name of the Document
filename = Filename
filedata = base64 encoded content of your file
refs
With “/” you mean “/api/method/” ?
Trying
curl -b cookies.txt -X POST -d ‘data={“cmd”:“uploadfile”, “dt”:“Note”, “dn”:“TestNote”, “filename”:“test.txt”, “file_data”:“SGVsbG8gV29ybGQK”}’ ‘http://myserver/api/method/’
and also
curl -b cookies.txt -X GET ‘http://myserver/api/method?cmd=uploadfile&dt=Note&dn=“TestNote”&filename=test.txt&filedata=SGVsbG8gV29ybGQK’
but doesn’t work.
An example would help…
This one works. I would admit that it took me some time to get it right
curl https://demo.frappecloud.com/ -d "cmd=uploadfile&doctype=Lead&docname=LEAD-00149&filename=testfromapi.txt&filedata=aGVsbG93b3JsZAo%3D&from_form=1" -XPOST -b frappe.cookie
(file data is base64 + encoded)
Thanks! Works for me too…
Any suggestions?
I’ve been using this method and set Employee (because I’m using Employee Login) permission to the doc “r and w” and always got 403, even though with administrator, system engineer.
here’s request snapshot from my post man
POST / HTTP/1.1
Host: http://www.domain.com/
Content-Type: application/x-www-form-urlencoded
Accept: application/json
Authorization: Bearer
cache-control: no-cache
Postman-Token: 2a4d1d6b-390a-4295-ab0b-0c0ee76efc79
from_form=1doctype=Schedulesdocname=HR-EMP-00001-Jakarta-2019-02-25cmd=uploadfilefilename=test.jpgfiledata=iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6CAMAAAC%2FMqoPAAAAz1BMVEUAAADUBy%2FDDi7dAzDdAzDdAzDdAzDDDi7DDi7DDi7dAzDdAzDdAzDDDi7DDi7DDi7dAzDdAzDdAzDDDi7DDi7DDi7dAzDdAzDDDi7DDi7dAzDdAzDDDi7DDi7dAzDDDi7fEz3HHTvugZjhh5f97%2FL78PLqYn7%2F%2F%2F%2FaaHz74OX44eXmQmTSSmL3wMvww8vhI0rLLEjyobHppbHdAzDDDi7jMlfOO1XoUnHWWW%2F50Nj00tjscYvdd4nwkaTllqT0sL7stL7hRGPXBjDWBi%2FFDS4%2BJsiBAAAARXRSTlMAMDAwj9%2F%2F%2F9%2BPIHDPz3AgEGC%2Fv2AQUK%2BvUJ%2Fv75%2BAgP%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F9AQP%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2Fr6%2BTKVt1AAAH7ElEQVR4AezUtaHDUBTA0I9mZtx%2FzHDMWOY%2BnQ3U6AsAAAAAAAAAAAAA8Em%2Bf9Ts%2Fv3713TDVK7esh3tRr9xPV%2Bd7iCMtCf9KU5SJcKzXOvonaIU313VmjZK7zRtKXtsY%2FqI1OlZ9rN7Jb2rlza9IHS0JfoSV9D0wlxboa8oElljO5HeTU%2FC2E6kC5heN7Yz6QKm143tTLqA6QXrYzub%2FpxeKmFsV2buQllxZQ3DcJZ1jwuMS7AYGmx84Jy97%2F%2BexjNGWLv%2Bzvst%2BO7gKfnrha6Kna4%2Fethhq9wUvdIf99G7EV8407xp1zpHevTuff8JrqN%2F%2F3H%2F8PgPG0%2Fnjx5%2F2Hg6f%2FT4w8bTj%2Fbo3ahKNWjdXpC76ty7B%2F9vMXz9Qbic%2B0cTOGz2JanRChw94LC55svyvPDNd5VH7%2BzrQQc2zPORJ%2Fbi5ekhD5t94%2FzLJoAcOHrEYTNs%2BpU%2BM%2FCAowccNmBl%2Fm1zD646evxhQ7f4Tl96cvzRW1WHjVs3%2F7HfswY6emv%2Bv0Vy%2FYo%2BoOnUP5rVT1F8SUVPeTnz8%2FbMaZZV8ipr%2BJ1GDSeiD3%2FRRyJ61HTW%2B2bImWoTifxFY3pLQp%2F%2BTp9J6G2eDuZMtflx0mMFffEnfamgd0g6nzNk1vD0R8qcUWZN86BdKXNGmTXr5jknzBlp1gC%2F4YQ5I82aqPkuZDkjzZprAL0lyxlp1rQB%2BmNY%2Fiqv3WuY%2FgSgx6qc0WZNB6DflDWstGbvAPSVKGfEWbM%2BOno32UdPezAdmCZn1FkTERPlDJ81PP0WKH%2BTX7K3oPw2Qm8pckadNW2Efi7IGXnWXEfosSBn5FnTQej3%2BZzRZ80DhL7ic0afNWuEfsbnjD5rTiNkfM7osyZi9pzOGX3WvIDoLTpn9FnTJul8zvBZw9NjOmf0WdNh6XzOLJZs1vD0R6qcGU9UWfMUoq9EOfPO%2BfeirFlD9HuinMmcL4CsYZ9e%2BKb5sGtMus730nxnH4mioXYhyZmNc95vJVlzDaO3JA1bfqXPJTXbxuiPFTkzdV%2FpfqbImicYPVa8ML75Tn%2BreHvsYPSbgpwZuu90PxJkzR2MvhLkTL%2BiDwRZsz4a%2BqZG163ovXx3W4AOjc%2BZhavofslnTcQNz5l8%2FIs%2Bybms4em36Jx5537R%2FXs6a26D9BadM9nv9ILOmjZIfwbnTNL9nd5L4ax5CdJjOGcW7ne6X8JZ0wHp9%2BHHpvJP%2Bhx%2BhHoA0ldszkzdn3Q%2FY7NmDdLP2JzJ%2FqYXbNacRuDQnBnufrVghGZNRA7Nmf4ufUBlDU9vkY9N5S59Tj5CtVk6mDMLt0v3SyhreHoMPjaN6%2BgT8BGqw9K5nBm6OrofAVmD0YEHmP%2FVeLJ6epHv7v%2F804t9Kyxnkm49vZdiWbNG6Tewhl24erpfYjV7N0JH5Uxe7qPPcyprInYXzAtjle%2B79PqQH%2FBPL%2Ba1oJzJ9tMLKGvaMP0xkzNDt5%2FuR0zWPIHpsZ3%2Bri7f6%2Bn7Q%2F69nd6h6UjO5OVl9HkOZA1PXyE5s3CX0f0SyZo1TSdyJh9fTp%2FkQNbg9IjImaG7nO5HRNZE9Iicyf6LXgBZw9NvWXMG2wB9etE3zZCjj%2FRFQz7AZDm4wvj0Qi825gw4W9Z0cPp9W86gm9ieXuitbDmDzpQ1a5x%2BZsoZeHP%2B6cUye85ws2RNdEh6N8fXOyi9pc8ZImvaB6UnPD09KD3W5wyRNR09nW9YpmYV9Ed8zlg24Z9e8KaZaugzumgMu6HPGSJr7kaC6XOGyJpIsQs%2BZ%2FisuSaht4Jzpj%2Bu3z%2BTPRsEZ01bQn8cmjOJ27N%2F9wrS0Kx5IqHHoTmzsdO3oVnT0dMtOVPa6XN71ijpq8CcmTo73c8Cs2atpxtyJguhF%2FasEdKjsJxJXAjdp2FZE2kWljObMPrWnjVC%2Bq2gnCnD6HN71tBPL4am6RuOXEU3HroBXzTIA0xiOHIV3XjoUvLpxbA4IGcSF0r3aUDWdET0%2BwE5swmnbwOy5oGIvgr42FAZTp8HfK5oLaKf2XNm6sLpfmbPmtNINPvHhrIm9ML%2BuaJINXPOJK4J3afmrJHRW8aGzTfN6NvcWLNtHd362FQ2o8%2Btj1A6emz8duLUNaP7mfErjJ0D0DPDkTPQC%2BMjlI7%2ByJYziWtK96kta57K6Ctbzmya07e2rFnL6Ddsj01lc%2Frc9gh1N5LNlDNT15zuZ6asiXS7sDw2ZQS9sDxCXRPSW4acSRxB96kha9pC%2BmNDzmwY%2BtaQNU%2BE9NjwKeiSoc8NH5fuXDW97NctcwzdF4O6za%2Bavvrcnl3Y6A5DQRS%2BPzMzF5FUMO%2F139KSeJmONdLe08EIvsR29%2Be9Of3n1TkdyXt6kI1OvtPP00CbX12n3zZBNzw6Tr%2FMokTV0m36qo5SbTtO0%2FuHYAO8k79ulHfy143yTv66Ud6J183VO%2FG6uXonWDfeu1P56WdWN9478brhtZYlp6%2Ba4VTVKTW9X4dbi1OJ6ed1%2FDwD78Tr5uqdeN1cvROvm6t34nVz9U68bq7eidfN1Tvxurl6J0A3h6rxb0yfELrxLTo%2Fnd5ndDPwTj66AeOP359%2BYYfzDZffm74CWTfwTrxurt6J183VO%2FG6uXonXjdX78Tr5uqdeN1cvROvm6t3ctYNGN9%2BffoAGG7XcPdy%2Bt5aN%2BBxWvxjsat3InTz79E7PekWQPbeyV83qOG%2F%2F7PI%2FmhZlmVZlmVZlmVZlmXZPZmSvHpA7pEOAAAAAElFTkSuQmCC
I’ve successfully upload the image but the problem is with permission, the server said, not permitted
, what method to pass this error while uploading attachment ?
I hope someone would tell what method they use to upload the attachment properly from android apps.
Thanks in advance.
do you get some answer to solve this issue ? i have some problem too about post image, when im using Token Auth , its give me response 403 Forbidden , but if im using method/login its success to post image
Messed around for a bit and realised that the key names have changed. The attached works whether you call ‘/api/method/uploadfile’ or just ‘/’ with “cmd=uploadfile”.
Any updates on this?, I’m also getting error by using Token Auth. I’m integrating a small api for Node with Token Auth, anyone interested just drop me a line. I’ll be make it available as soon as uploading is working.
i create new api that return upload() function from erpnext directly and its work
nice!, can you share it?.. i’m using npm package promise-request …
code just here: https://raw.githubusercontent.com/quad-tree/erpcloud_utils/master/api_erpnext_v11.js
i just create a simple api like that and it’s work
how did you set your payload for this?
Did that get you past the problem you were having?
Worked for me too with image but when I’m working on video upload and when i encode a mp4 video to base64, and try to upload it using the API, it gives me error
{“exc”:“["Traceback (most recent call last):\n File \"/home/frappe/frappe-bench/apps/frappe/frappe/handler.py\", line 139, in uploadfile\n ret.save()\n File \"/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py\", line 273, in save\n return self._save(*args, **kwargs)\n File \"/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py\", line 296, in _save\n self.insert()\n File \"/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py\", line 223, in insert\n self.run_method(\"before_insert\")\n File \"/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py\", line 797, in run_method\n out = Document.hook(fn)(self, *args, **kwargs)\n File \"/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py\", line 1073, in composer\n return composed(self, method, *args, **kwargs)\n File \"/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py\", line 1056, in runner\n add_to_return_value(self, fn(self, *args, **kwargs))\n File \"/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py\", line 791, in \n fn = lambda self, *args, **kwargs: getattr(self, method)(*args, **kwargs)\n File \"/home/frappe/frappe-bench/apps/frappe/frappe/core/doctype/file/file.py\", line 55, in before_insert\n self.save_file(content=self.content, decode=self.decode)\n File \"/home/frappe/frappe-bench/apps/frappe/frappe/core/doctype/file/file.py\", line 455, in save_file\n self.content = base64.b64decode(self.content)\n File \"/home/frappe/frappe-bench/env/lib/python3.6/base64.py\", line 87, in b64decode\n return binascii.a2b_base64(s)\nbinascii.Error: Incorrect padding\n"]”}