You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Information for doc: MUST respect server's request of upload type #124
If VRChat returns an upload type of simple, you MUST respect it and upload all the data in one big HTTP request to S3.
In this scenario, you need to add the content-md5 and content-type headers to the request.
Multipart
Otherwise, if you get multipart, you HAVE to upload only 10485760 bytes at a time, and update your part number when doing startFileUpload.
The content-md5 and content-type headers MUST be omitted otherwise your request will be rejected.
It is expected that you calculate the number of required parts yourself.
An implementation of this goes as follows:
FileStreamfs=File.Open("file.txt");intchunkSize=10485760;byte[]buffer=newbyte[chunkSize*2];intparts=(int)MathF.Max(1f,MathF.Floor((float)fs.Length/(float)chunkSize));for(intpart=0;part<=parts;part++){intbytesToRead=part<parts?chunkSize:(int)(fs.Length-fs.Position);intbytesRead=fs.Read(buffer,0,bytesToRead);// example methodvarfile=StartMultipartUpload(type,part);UploadToS3(buffer,bytesRead,file.URL);// VRChat throws an exception if bytesRead != bytesToRead}
Queued
Not documented yet, not sure what queued does or means.
If this isn't explicitly followed, the file is rejected on the server end later on, with the S3 URL returning 403 Forbidden.
Better documentation of the File API is drastically needed. It is one of the most complex areas, and also one that's requested the most. Will look into this more in the coming weeks.
Activity
binn commentedon Dec 20, 2021
When completing a multipart File Upload, you must save the
etagsreturned from the S3 API and provide it to thefinishFileUploadrequest.Foorack commentedon Jan 20, 2022
Thank you. I had actually missed this one.
Better documentation of the File API is drastically needed. It is one of the most complex areas, and also one that's requested the most. Will look into this more in the coming weeks.