当我覆盖blob然后更新浏览器仍然是缓存 主要形象,而不是新形象。我读过有一个 缓存控制属性,但我无法实现它。我需要清理 刚刚上传的blob缓存
我正在尝试使用connect-busboy中间件和以下方法覆盖现有的blob,但文件没有被覆盖,我不明白为什么。
createBlockBlobFromStream(container,blob,(Stream),streamLength,
选项,回调)→{SpeedSummary}从流上传块blob。如果blob已存在于 服务,它将被覆盖。
app.post('/upload', function(req, res, params) {
var name;
req.busboy.on('field', function (fieldname, val) {
name = val+'.jpg';
});
req.busboy.on('file', function (fieldname, file, filename, encoding, mimetype) {
file.on('data', function (data) {
console.log(name);
console.log(data);
var bufferStream = new stream.PassThrough();
bufferStream.end(data);
var blobSvc = azure.createBlobService(accountName, accountKey);
blobSvc.createBlockBlobFromStream('images', name, bufferStream, data.length, function (error, result, response){
if (!error) {
res.send(200,'upload succeeded')
} else {
res.send(500,JSON.stringify(error))
}
})
});
});
});
答案 0 :(得分:0)
每Azure Storage SDK for Node API Reference,
createBlockBlobFromStream(container, blob, (Stream), streamLength, options, callback) → {SpeedSummary}
从流上传块blob。 如果blob已存在于 服务,它将被覆盖。避免改写而是改为 如果blob存在则抛出错误,请传入accessConditions 选项对象中的参数。
因此,您正在使用Azure Storage SDK for Node覆盖现有的blob文件。
好像你遇到了上传问题。我建议您尝试使用createWriteStreamToBlockBlob而不是createBlockBlobFromStream
将Blob上传到Azure存储。
以下示例使用 connect-busboy 中间件。创建/公共文件夹。
使用文件夹结构:
\ index.js
\公共\ index.html的
INDEX.JS
var express = require('express')
var app = express()
var busboy = require('connect-busboy')
var azure = require('azure-storage')
var accountName = "<acountName>"
var accountKey = "<accountKey>"
app.use(busboy())
app.use(express.static('public'))
app.get('/', function(req, res) {
res.sendFile('index.html')
})
app.post('/upload', function(req, res, params) {
req.pipe(req.busboy);
req.busboy.on('file', function(fieldname, file, filename) {
var blobSvc = azure.createBlobService(accountName, accountKey)
file.pipe(blobSvc.createWriteStreamToBlockBlob('mycontainer', filename, function(error) {
if (!error) {
res.send(200, 'upload succeeded')
} else {
res.send(500, JSON.stringify(error))
}
}))
})
})
app.listen(process.env.PORT || 3000, function() {
console.log('Example app listening on port 3000!')
})
INDEX.HTML
<!DOCTYPE html>
<html>
<head>
<title>Sample</title>
</head>
<body>
<form action="/upload" method="post" enctype="multipart/form-data">
Select image to upload:
<input type="file" name="fileToUpload" id="fileToUpload">
<input type="submit" value="Upload Image" name="submit">
</form>
</body>
</html>