Uploading a file to slack using webwrite

I would like to be able to upload an image to slack using file.upload API and webwrite. The API ( https://api.slack.com/methods/files.upload ) requires to pass an argument "file" of 'multipart/form-data'.
I have tried this code and small variations unsuccessfully... any suggestion?
token='mytoken';
channel='mychannel';
filename='myimage.png';
fid=fopen(filename, 'rb');
data=fread(fid, Inf, '*char')';
fclose(fid);
options = weboptions;
options.RequestMethod = 'post';
options.MediaType = 'multipart/form-data';
options.HeaderFields = string({'token', token; 'channels', channel; 'filename', filename});
response = webwrite('https://slack.com/api/file.upload', data, options);
This yields 'invalid_form_data' and no image upload.
I also tried:
token='mytoken';
channel='mychannel';
filename='myimage.png';
fid=fopen(filename, 'rb');
data=fread(fid, Inf, '*char')';
fclose(fid);
options = weboptions;
options.RequestMethod = 'post';
options.MediaType = 'multipart/form-data';
response = webwrite(sprintf('https://slack.com/api/file.upload?token=%s&channels=%s&filename=%s&file=', token, channel, filename), data, options)
with the same results

回答(1 个)

Jan
Jan 2016-11-23
If you upload the file defining the file name, you do not have to provide the data separately. So try the secend method with providing the filename for "file=" also.

3 个评论

Unfortunately that does not work. file= has to point to the content not the filename. In curl it would be -F file=@filename and not -F file=filename.
There is not way for the webwrite function to know that it has to send the actual data in the file to the web site.
in Python it would be a request where you pass file=open(filename,'rb')
Unfortuantely I find only CURL examples in the documentation. Because I've never worked with slack (or CURL) yet, I cannot guess the underlying patterns for the input arguments. But you can install CURL on your computer and use system or a C-Mex function to call it from Matlab. Then the examples from the slack pages run directly.

请先登录,再进行评论。

类别

帮助中心File Exchange 中查找有关 MATLAB 的更多信息

产品

评论:

2020-1-22

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by