谷歌前端页面的同一个文件不能上传两次的解决办法

谷歌浏览器,file input出于安全角度,用户异步上传完毕文件后选择相同文件时,不会触发onChange函数,因此再次上传相同的文件时会失败。

解决方案:在上传失败或上传成功的回调中将 input type=file的value清除

要实现前端页面上传谷歌网盘的素材,需要进行以下步骤: 1. 在谷歌开发者控制台中创建一个项目,并启用Google Drive API。 2. 在API凭据中创建OAuth 2.0客户端ID,并将重定向URI设置为您的网站的URL,以便在用户授权时重定向回来。 3. 在前端页面中使用JavaScript编写代码,实现用户选择要上传文件,并获取用户授权。 4. 使用Google API客户端库将文件上传谷歌网盘。 以下是一个简单的示例代码,用于上传文件谷歌网盘: ```javascript // 定义谷歌API客户端库的加载函数 function loadClient() { gapi.client.load('drive', 'v3', () => { console.log('Google Drive API loaded'); }, (err) => { console.error('Error loading Google Drive API', err); }); } // 定义函数,用于选择文件上传谷歌网盘 function uploadFile() { // 选择文件 const fileInput = document.getElementById('file-input'); const file = fileInput.files[0]; // 创建文件的元数据 const metadata = { name: file.name, mimeType: file.type }; // 创建Blob对象,用于文件上传 const reader = new FileReader(); reader.readAsBinaryString(file); reader.onload = (event) => { const fileContent = event.target.result; const blob = new Blob([fileContent], {type: file.type}); // 上传文件谷歌网盘 const accessToken = gapi.auth.getToken().access_token; const xhr = new XMLHttpRequest(); xhr.open('POST', 'https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart'); xhr.setRequestHeader('Authorization', 'Bearer ' + accessToken); xhr.setRequestHeader('Content-Type', 'multipart/related; boundary=foo_bar_baz'); xhr.onload = () => { console.log('File uploaded to Google Drive'); }; xhr.onerror = (err) => { console.error('Error uploading file to Google Drive', err); }; const body = ` --foo_bar_baz\r Content-Type: application/json; charset=UTF-8\r \r ${JSON.stringify(metadata)}\r --foo_bar_baz\r Content-Type: ${file.type}\r \r ${blob}\r --foo_bar_baz--`; xhr.send(body); }; } // 初始化谷歌API客户端库 gapi.load('client', loadClient); ``` 在上面的代码中,`loadClient()`函数用于加载谷歌API客户端库,`uploadFile()`函数用于选择文件上传谷歌网盘。注意,需要在前端页面中引入Google API客户端库的JavaScript文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值