0

私のサイトのユーザーが、自分のサーバーに保存されている作成したファイルをアップロードして、Google ドライブ アカウントにアップロードできるようにしたいと考えています。

認証してこのアクセストークンを .net に渡そうとしましたが、そのフローを機能させることができませんでした。 .netでGoogleドライブリクエストに既存のアクセストークンを使用する

だから今、私はJavaScriptだけでこれを行うのを手伝う必要があります. ファイルをバックグラウンドでダウンロードして API に渡すにはどうすればよいですか?

可能であれば、[ドライブに保存] ボタンは使用したくありません。

これが私の現在のコードです:

    gapi.client.load('drive', 'v2', function() {
      //How do i download a file and then pass it on.
      var file = 
      insertFile(file);
    });


  /**
   * Insert new file.
   *
   * @param {File} fileData File object to read data from.
   * @param {Function} callback Function to call when the request is complete.
   */
  function insertFile(fileData, callback) {
    const boundary = '-------314159265358979323846';
    const delimiter = "\r\n--" + boundary + "\r\n";
    const close_delim = "\r\n--" + boundary + "--";

    var reader = new FileReader();
    reader.readAsBinaryString(fileData);
    reader.onload = function(e) {
      var contentType = fileData.type || 'application/octet-stream';
      var metadata = {
        'title': fileData.name,
        'mimeType': contentType
      };

      var base64Data = btoa(reader.result);
      var multipartRequestBody =
          delimiter +
          'Content-Type: application/json\r\n\r\n' +
          JSON.stringify(metadata) +
          delimiter +
          'Content-Type: ' + contentType + '\r\n' +
          'Content-Transfer-Encoding: base64\r\n' +
          '\r\n' +
          base64Data +
          close_delim;

      var request = gapi.client.request({
          'path': '/upload/drive/v2/files',
          'method': 'POST',
          'params': {'uploadType': 'multipart'},
          'headers': {
            'Content-Type': 'multipart/mixed; boundary="' + boundary + '"'
          },
          'body': multipartRequestBody});
      if (!callback) {
        callback = function(file) {
          console.log(file)
        };
      }
      request.execute(callback);
    }
  }
4

1 に答える 1

0

XMLHttpRequest を使用して GET リクエストからバイナリ文字列にファイルをダウンロードする例は多数あります。たとえば、このように。ファイルをバイナリ文字列として読み取る部分reader.readAsBinaryString(fileData);をこのコードに置き換えることができます。

于 2013-07-02T07:02:37.593 に答える