gpt4 book ai didi

asp.net - 上传到 Azure

转载 作者:行者123 更新时间:2023-12-03 17:57:37 25 4
gpt4 key购买 nike

我在尝试将文件直接上传到 azure blob 存储时遇到问题。我正在使用 ajax 调用将 post 请求发送到 ashx 处理程序以分块上传 blob。我遇到的问题是处理程序没有收到从 ajax 帖子发送的文件块。

通过查看 firebug 中的请求,我可以看到页面正在正确接收帖子,

-----------------------------265001916915724 Content-Disposition: form-data; >name="Slice"; filename="blob" Content-Type: application/octet-stream



我注意到处理程序上的输入流有文件块,包括来自请求的额外字节。我试图从输入流中只读取文件块的大小,但这导致文件损坏。

我的灵感来自 http://code.msdn.microsoft.com/windowsazure/Silverlight-Azure-Blob-3b773e26 ,我只是将它从 MVC3 转换为使用标准 aspx。

这是使用ajax将文件块发送到aspx页面的调用,
var sendFile = function (blockLength) {
var start = 0,
end = Math.min(blockLength, uploader.file.size),
incrimentalIdentifier = 1,
retryCount = 0,
sendNextChunk, fileChunk;
uploader.displayStatusMessage();
sendNextChunk = function () {
fileChunk = new FormData();
uploader.renderProgress(incrimentalIdentifier);
if (uploader.file.slice) {
fileChunk.append('Slice', uploader.file.slice(start, end));
}
else if (uploader.file.webkitSlice) {
fileChunk.append('Slice', uploader.file.webkitSlice(start, end));
}
else if (uploader.file.mozSlice) {
fileChunk.append('Slice', uploader.file.mozSlice(start, end));
}
else {
uploader.displayLabel(operationType.UNSUPPORTED_BROWSER);
return;
}
var testcode = 'http://localhost:56307/handler1.ashx?create=0&blockid=' + incrimentalIdentifier + '&filename=' + uploader.file.name + '&totalBlocks=' + uploader.totalBlocks;
jqxhr = $.ajax({
async: true,
url: testcode,
data: fileChunk,
contentType: false,
processData:false,
dataType: 'text json',
type: 'POST',
error: function (request, error) {
if (error !== 'abort' && retryCount < maxRetries) {
++retryCount;
setTimeout(sendNextChunk, retryAfterSeconds * 1000);
}

if (error === 'abort') {
uploader.displayLabel(operationType.CANCELLED);
uploader.resetControls();
uploader = null;
}
else {
if (retryCount === maxRetries) {
uploader.uploadError(request.responseText);
uploader.resetControls();
uploader = null;
}
else {
uploader.displayLabel(operationType.RESUME_UPLOAD);
}
}

return;
},
success: function (notice) {
if (notice.error || notice.isLastBlock) {
uploader.renderProgress(uploader.totalBlocks + 1);
uploader.displayStatusMessage(notice.message);
uploader.resetControls();
uploader = null;
return;
}

++incrimentalIdentifier;
start = (incrimentalIdentifier - 1) * blockLength;
end = Math.min(incrimentalIdentifier * blockLength, uploader.file.size);
retryCount = 0;
sendNextChunk();
}
});
};

非常感谢任何可以帮助我的东西。

最佳答案

ASPX 是故意的吗?在 http://localhost:56307/handler1 . ashx ?create=0&blockid?

关于asp.net - 上传到 Azure,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8673058/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com