Reputation: 64
I have been trying to replace files using google API only with the Python HTTPS module. But when I replace it. It adds some string to the file with text. Code:
headers = {
"Authorization": "Bearer " + str(Acesstoken),
}
files = {
'file': open("./Test.txt", "rb"),
"mimeType": "text/plain"
}
r2= requests.patch(
"https://www.googleapis.com/upload/drive/v3/files/" + updateFileId,
headers= headers,
files = files,
)
Text On Google Drive Before Replacing File:
Test
Text On Google Drive After Replacing File:
--a164a6e367e3577590ab9eb85b487e21
Content-Disposition: form-data; name="file"; filename="Test.txt"
Test 2
--a164a6e367e3577590ab9eb85b487e21
Content-Disposition: form-data; name="mimeType"; filename="mimeType"
text/plain
--a164a6e367e3577590ab9eb85b487e21--
Advance Thanks to @DaImTo
I've just unlocked talk in chat. I don't mind talking.
Upvotes: 0
Views: 437
Reputation: 201428
I thought that in your script, the endpoint is required to be modified. In your situation, please add the query parameter of uploadType=media
as follows.
By the way, in this script, it supposes that the file of Google Drive is the text file. From your comment, it seems that you are trying to overwrite the ZIP file as text data. In this case, the mimeType is not changed. So I would like to recommend to be the same mimeType between a file on Google Drive and the uploading file.
If you want to update the text file on Google Drive by ./Test.txt
, how about the following modification?
In this script, the text file on Google Drive is overwritten by ./Test.txt
.
import requests
accessToken = '###' # Please set your access token.
updateFileId = '###' # Please set the file ID fot the text file on Google Drive.
headers = {"Authorization": "Bearer " + accessToken}
file = open("./Test.txt", "rb")
r2 = requests.patch(
"https://www.googleapis.com/upload/drive/v3/files/" + updateFileId + "?uploadType=media",
headers=headers,
data=file,
)
If you want to append the text file on Google Drive by ./Test.txt
, how about the following modification?
import io
import requests
accessToken = '###' # Please set your access token.
updateFileId = '###' # Please set the file ID fot the text file on Google Drive.
headers = {"Authorization": "Bearer " + accessToken}
r1 = requests.get("https://www.googleapis.com/drive/v3/files/" + updateFileId + "?alt=media", headers=headers)
file = open("./Test.txt", "rt")
merged = r1.text + file.read()
r2 = requests.patch(
"https://www.googleapis.com/upload/drive/v3/files/" + updateFileId + "?uploadType=media",
headers=headers,
data=io.BytesIO(bytes(merged, 'utf-8')),
)
./Test.txt
, the text file is updated.Upvotes: 3