谷歌驱动器pdf没有正确上传到s3服务器
Google drive pdf not uploaded properly to s3 server
我正试图将pdf文件从谷歌驱动器上传到s3服务器,但上传不正确。
我使用谷歌驱动器选择器来获取文件这是我的
这是我的谷歌驱动器选择器代码:-(客户端代码)
<script type="text/javascript" src="https://apis.google.com/js/api.js"></script>
// The Browser API key obtained from the Google Developers Console.
// Replace with your own Browser API key, or your own key.
var developerKey = 'XXXXXXXXXX_ff_NX66eb-XXXXXXXXXXX';
// The Client ID obtained from the Google Developers Console. Replace with your own Client ID.
var clientId = "XXXXXXXXXX-hs4ujaro5sc3d0g8qndtcq2tl279cfm1.apps.googleusercontent.com"
// Replace with your own App ID. (Its the first number in your Client ID)
var appId = "XXXXXXXXXX";
// Scope to use to access user's Drive items.
var scope = ['https://www.googleapis.com/auth/drive'];
var pickerApiLoaded = false;
var oauthToken;
$scope.addGoogleDriveFile = function() {
if (!isValidSelectedCategories(getSelectedCategories())) {
return;
}
if (!isValidSelectedCategoriesNoapost(getSelectedCategories())) {
return;
}
gapi.load('auth', {'callback': onAuthApiLoad});
gapi.load('picker', {'callback': onPickerApiLoad});
}
function onAuthApiLoad() {
window.gapi.auth.authorize(
{
'client_id': clientId,
'scope': scope,
'immediate': false
},
handleAuthResult);
}
function onPickerApiLoad() {
pickerApiLoaded = true;
createPicker();
}
function handleAuthResult(authResult) {
if (authResult && !authResult.error) {
oauthToken = authResult.access_token;
createPicker();
}
}
// Create and render a Picker object for searching images.
function createPicker() {
if (pickerApiLoaded && oauthToken) {
var view = new google.picker.View(google.picker.ViewId.DOCS);
var picker = new google.picker.PickerBuilder()
.enableFeature(google.picker.Feature.NAV_HIDDEN)
.setAppId(appId)
.setOAuthToken(oauthToken)
.addView(view)
.addView(new google.picker.DocsUploadView())
.setDeveloperKey(developerKey)
.setCallback(pickerCallback)
.build();
picker.setVisible(true);
}
}
// A simple callback implementation.
function pickerCallback(data) {
if (data.action == google.picker.Action.PICKED) {
console.log(data);
addGoogleDrivePDF (data.docs);
}
}
var addGoogleDrivePDF = function (file) {
var pdfData = {
url: file[0].url
};
$http.post('/uploadto/s3/drtivepdf', pdfData )
.success((function (article) {
console.log(article);
}).error(function (error) {
console.log(article);
});
}
在这里我可以获得文件url
喜欢:https://drive.google.com/file/d/0B39VaBFZeygDNEVuWDYtYlgxNGhTeVdKNWtSX0tpT0FzeDRB/view?usp=drive_web
这是我的服务器端代码
s3upload_rou.js文件(路由器文件)
app.post('/uploadto/s3/drtivepdf', function (req, res, next) {
next();
}, bookmark.addGoogleDrivePDF );
s3upload_ctrl.js文件(控制器文件)
var async = require('async');
var config = require('../config');
var file = require('../libs/file');
exports.addDropboxBookmark = function (req, res, next) {
saveGoogleDrivePdf(req.body.url, function (err, pdfDetail) {
if (err) {
cb(err);
} else {
res.send(pdfDetail);
}
});
}
var saveGoogleDrivePdf= function (url, callback) {
async.waterfall([
function (cb) {
var fileDetails = {
url: url,
name: 'drive/' + url.toString().replace(/^(http|https):'/'//i, ""),
contentType: 'application/pdf'
};
file.uploadPdf(fileDetails);
cb(null, fileDetails);
},function (fileDetails, cb) {
console.log(fileDetails);
//create object for saving the pdf
var pdfDetail = {
pdf_url: fileDetails.url,
pdf_title: 'PDF FILE',
pdf_preview_image: config.defaultPreviewImageUrl,
pdf_file: fileDetails.name,
pdf_website: url.parse(url, false, true).host,
mode: 'pdf'
};
cb(null, pdfDetail );
}
], function (err, pdfDetail ) {
if (err) {
callback(err);
} else {
callback(null, pdfDetail );
}
});
}
这是我的file.js代码:-'
var request = require('request');
var config = require('../config');
var url = require('url');
var http = require('http');
var pool = new http.Agent();
var streamingS3 = require('streaming-s3');
exports.uploadPdf = function (details, cb) {
var options = {
url: config.s3.url + 'upload/drive',
method: 'POST',
json: true,
body: details,
headers : { "x-api-key": config.s3.apiKey, "x-aws-bucket": config.aws.bucket, "Content-Type": 'application/json' },
agent: pool
};
request(options, function (err, res) {
if (err) {
console.log(err);
logger.log('error', "PDF Error: ", { error : err , details: details });
} else {
console.log(res.body);
logger.log('info', "UPLOAD PDF", { response : res.body });
}
});
};
上传工作正常,但当我试图在S3上查看该文件时,我无法打开它。
有什么原因吗?
感谢
要使用JS下载所选文件,请使用此
function downloadFile(file, callback) {
if (file.downloadUrl) {
var accessToken = gapi.auth.getToken().access_token;
var xhr = new XMLHttpRequest();
xhr.open('GET', file.downloadUrl);
xhr.setRequestHeader('Authorization', 'Bearer ' + accessToken);
xhr.onload = function() {
callback(xhr.responseText);
};
xhr.onerror = function() {
callback(null);
};
xhr.send();
} else {
callback(null);
}
}
相关文章:
- 使用JSP从服务器检索和显示图像
- 如何使用skip参数使用angular ui引导进行服务器端分页
- Amazon S3 REST API大小不正确
- 客户端服务器REST API captcha实现
- 正在将base64 jpeg从input-type=file上传到服务器
- Webpack开发服务器和React服务器端渲染
- 提示使用服务器端事件处理程序激活JavaScript
- 使用谷歌应用程序脚本将服务器端数据表返回到客户端
- 如何使用Socket.io将命令从客户端发送到服务器
- jQuery blueimp文件上传:将N-1个文件上传到IE中的服务器
- 使用jasmine模拟对服务器的调用
- 如何轻松地将服务器端变量从Java代码转移到客户端代码
- 从客户端获取修改后的对象,并将其与服务器上的原始对象组合
- 通过ajax将坐标传递到php服务器端,并在处理后检索到javascript
- 谷歌驱动器pdf没有正确上传到s3服务器
- 将图像从 Web 应用程序上传到 S3,而无需将其存储在服务器中
- 如何在不由服务器传递文件的情况下将文件上传到 Amazon S3
- 将图像上传到表单以及 S3 和网络服务器
- AWS 服务器端临时凭证是否可用于客户端 S3 上传
- 将画布图像上传到S3服务器