I've seemingly read through all the threads and documentation with no avail. I'd like to send a csv from one non-SAS server to a SAS server through a stored process which will return some output. This appears to be trivial to do when using non-file parameters, but impossible when using a csv. For instance, assuming a python non-SAS backend, using the requests library I logon and then call the testprint_sp stored process. base_url = "https://mybaseurl"
login_url = base_url + "/SASLogon/login"
s = requests.Session()
r = s.get(login_url, verify=False)
data = {"username": "uname", "password":"pwd123"}
r = s.post(login_url, data=data)
execute_url = base_url + "/SASStoredProcess/do?_program=/User Folders/my folder/testprint_sp"
data = {'num':20}
r = s.post(execute_url, data=data) Or after logging on, simply browsing to https://mybaseurl/SASStoredProcess/do?_program=/User Folders/my folder/testprint_sp&num=20 This is great but it fails when I try to send a csv. filename = "D:/Documents/testfile.csv"
files = {'file': ('myfile', open(filename, 'rb'))}
r = s.post(execute_url, data=data, files=files) All of the _WEBIN_% macro variables are missing. Now, there is a workaround which is to build an html form within a sas stored process. <form action="StoredProcessWebApplicationURL" method="post"
enctype="multipart/form-data">
<input type="hidden" name="_program" value="/Path/StoredProcessName">
<table border="0" cellpadding="5">
<tr>
<th>Choose a file to upload:</th>
<td><input type="file" name="myfile"></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" value="OK"></td>
</tr>
</table> But this adds the extra step of having a client using the form and browsing to a specific file. I'd like the data to be automatically sent to SAS without having an html form built in a SAS procedure. Any help is greatly appreciated.
... View more