Upload files to webservers using Matlab's webread/webwrite or urlread2, urlreadpost

Hi, I am trying to upload a file to a webserver using an api. I can read the contents of the file to a string (using fileread) and then pass that to the api (see expected api payload below). I have used Matlab's in-built functions (webread, webwrite for accessing APIs), urlread2 and urlreadpost but havent been successful. I modified the code in urlreadpost.m:
urlConnection.setDoOutput(true);
boundary = '---------------------------';%'BoUnDaRyStRiNg';%'***********************';
urlConnection.setRequestProperty( ...
'Content-Type',['multipart/form-data; boundary=',boundary]);
printStream = java.io.PrintStream(urlConnection.getOutputStream);
% also create a binary stream
% dataOutputStream = java.io.DataOutputStream(urlConnection.getOutputStream);
eol = [char(13),char(10)];
for i=1:2:length(params)
printStream.print(['--',boundary,eol]);
printStream.print(['Content-Disposition: form-data; name="',params{i},'"']);
if ischar(params{i+1})
% binary data is uploaded as an octet stream
% Echo Nest API demands a filename in this case
printStream.print(['; filename="file.wrg"',eol]);
printStream.print(['Content-Type: application/octet-stream',eol]);
printStream.print(params(i+1))
printStream.print([eol]);
%dataOutputStream.write(params{i+1},0,length(params{i+1}));
printStream.print([eol]);
else
disp('Hello')
printStream.print([eol]);
printStream.print([eol]);
printStream.print([params{i+1},eol]);
end
end
% printStream.print(['--',boundary,'--',eol]);
printStream.close;
The expected the request payload for the API should look like this.
-----------------------------147542583027268
Content-Disposition: form-data; name="wrg_file"; filename="Breivikfjellet_windoku.wrg"
Content-Type: application/octet-stream
14 11 606338 7140563 373
GridPoint 606338 7140563 200 80 4.51 2.000 0 12 80 45 200 80 45 200 80 45 200 80 45 200 80 45 200 80 45 200 80 45 200 80 45 200 80 45 200 80 45 200 80 45 200 80 45 200
....
GridPoint 611187 7144293 200 80 9.03 2.000 0 12 80 90 200 80 90 200 80 90 200 80 90 200 80 90 200 80 90 200 80 90 200 80 90 200 80 90 200 80 90 200 80 90 200 80 90 200
-----------------------------147542583027268--

2 commentaires

Did you find and answer to your question? I've got the same problem and had to use urlreadpost instead of the native webwrite.
Please upvote this question!

Connectez-vous pour commenter.

Question posée :

le 17 Juil 2015

Réponse apportée :

le 14 Oct 2016

Community Treasure Hunt

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

Start Hunting!

Translated by