Content disposition filename

File name is extracted from headers.
This commit is contained in:
Juan Salvador Perez Garcia 2018-01-13 09:01:50 +01:00 committed by Jonas Jenwald
parent 96c573ad38
commit eb1f6f4c24
8 changed files with 139 additions and 21 deletions

View file

@ -15,7 +15,8 @@
import { assert, createPromiseCapability, stringToBytes } from '../shared/util';
import {
createResponseStatusError, validateRangeRequestCapabilities
createResponseStatusError, extractFilenameFromHeader,
validateRangeRequestCapabilities
} from './network_utils';
import globalScope from '../shared/global_scope';
@ -340,6 +341,7 @@ function PDFNetworkStreamFullRequestReader(manager, source) {
this._requests = [];
this._done = false;
this._storedError = undefined;
this._fileName = null;
this.onProgress = null;
}
@ -350,11 +352,13 @@ PDFNetworkStreamFullRequestReader.prototype = {
var fullRequestXhrId = this._fullRequestId;
var fullRequestXhr = this._manager.getRequestXhr(fullRequestXhrId);
const getResponseHeader = (name) => {
return fullRequestXhr.getResponseHeader(name);
};
let { allowRangeRequests, suggestedLength, } =
validateRangeRequestCapabilities({
getResponseHeader: (name) => {
return fullRequestXhr.getResponseHeader(name);
},
getResponseHeader,
isHttp: this._manager.isHttp,
rangeChunkSize: this._rangeChunkSize,
disableRange: this._disableRange,
@ -381,6 +385,11 @@ PDFNetworkStreamFullRequestReader.prototype = {
networkManager.abortRequest(fullRequestXhrId);
}
// Content-Disposition: attachment; filename=Naïve file.txt
if (networkManager.isPendingRequest(fullRequestXhrId)) {
this._fileName = extractFilenameFromHeader(getResponseHeader);
}
this._headersReceivedCapability.resolve();
},
@ -429,6 +438,10 @@ PDFNetworkStreamFullRequestReader.prototype = {
}
},
get fileName() {
return this._fileName;
},
get isRangeSupported() {
return this._isRangeSupported;
},