Hi there,
I am not sure if you are using Box Python SDK for this or not. Here is a link for the SDK: Box Python SDK
Basically, when using SDK, you would do the following to upload a file. Obviously you would need to be authenticated first with proper tokens.
from StringIO import StringIO
stream = StringIO()
stream.write('Box Python SDK test!')
stream.seek(0)
box_file = client.folder('0').upload_stream(stream, 'box-python-sdk-test.txt')
print box_file.name
here, the parent is '0' and the name of the file is 'box-python-sdk-test.txt'. It returns the file object in json. It prints the filename as an output in this example.
I would recommended to use SDK. It will prevent you from handling all the network backend work, queuing and much of the overhead.
hope this helps.
thanks,
Bibek
Hi ,
Thank you for your response. Unfortuately, I'm trying to do this without the python SDK but rather with the python Requests.request library. Do you have any idea how I'd go about doing that? Like I mentioned, it's the "attributes" that seem to be causing the problem because Box appears not to accept JSON as a valid method.
Hi ,
You can try something like this if you are using requests module to pass attribute.
data = {'attributes': json.dumps({
'name': file_name,
'parent': {'id': parent_folder_id},
})}
files = {
'file': ('unused', file_stream),
}
box_response = self._session.post(url, data=data, files=files, expect_json_response=False)
file_response = box_response.json()('entries']'0]
file_id = file_responses'id']
where file_stream is the object containing the bytes. You need to modify the request according to your methods anyway. But the main thing is you need to pass "data" into the POST request like the above sample.
hope this helps.
thanks,
Bibek
In the example here we upload a text file (.txt). Is is possible to upload as a boxnote (.boxnote) i.e. box-python-sdk-test.boxnote.
When I do this, the code doesn't complain however when I try an open the file in my browser I get the following error:
Sorry, there's been a problem with the contents of this note.
We have created a recovered note in the same folder (the file name ends with "(RECOVERED)").
I'm encountering this same 405 Method Not Allowed error. Asambors, did you get this to work and if so, what did you need to do?
I am trying to upload file with'rest-client' gems. I have tried but no luck. Here the code I tried so far.
content_type = MIME::Types.type_for('/home/vagrant/mukesh.txt').first.content_type
headers = {
"Authorization"=> "Bearer ",
"Content-Type"=> content_type
}
payload = {
"attributes"=> {"name"=>"mukesh.txt", "parent"=>{"id"=>"0"}},
"file"=> File.new('/home/vagrant/mukesh.txt', 'rb'),
"multipart"=> true
}
response = RestClient::Request.execute(:method=> :post,:url=>"https://upload.box.com/api/2.0/files/content",:payload=>payload , :headers=> headers)
This is giving me 405 Method Not Allowed errors.