mirror of
https://github.com/microsoft/playwright.git
synced 2024-12-14 21:53:35 +03:00
fix: compute file field mime type on the server (#10394)
This commit is contained in:
parent
bd93fc499f
commit
0ca10da166
@ -16,7 +16,6 @@
|
||||
|
||||
import fs from 'fs';
|
||||
import path from 'path';
|
||||
import * as mime from 'mime';
|
||||
import * as util from 'util';
|
||||
import { Serializable } from '../../types/structs';
|
||||
import * as api from '../../types/types';
|
||||
@ -283,11 +282,7 @@ export class APIResponse implements api.APIResponse {
|
||||
}
|
||||
}
|
||||
|
||||
type ServerFilePayload = {
|
||||
name: string,
|
||||
mimeType: string,
|
||||
buffer: string,
|
||||
};
|
||||
type ServerFilePayload = NonNullable<channels.FormField['file']>;
|
||||
|
||||
function filePayloadToJson(payload: FilePayload): ServerFilePayload {
|
||||
return {
|
||||
@ -307,7 +302,6 @@ async function readStreamToJson(stream: fs.ReadStream): Promise<ServerFilePayloa
|
||||
const streamPath: string = Buffer.isBuffer(stream.path) ? stream.path.toString('utf8') : stream.path;
|
||||
return {
|
||||
name: path.basename(streamPath),
|
||||
mimeType: mime.getType(streamPath) || 'application/octet-stream',
|
||||
buffer: buffer.toString('base64'),
|
||||
};
|
||||
}
|
||||
|
@ -253,7 +253,7 @@ export type FormField = {
|
||||
value?: string,
|
||||
file?: {
|
||||
name: string,
|
||||
mimeType: string,
|
||||
mimeType?: string,
|
||||
buffer: Binary,
|
||||
},
|
||||
};
|
||||
|
@ -224,7 +224,7 @@ FormField:
|
||||
type: object?
|
||||
properties:
|
||||
name: string
|
||||
mimeType: string
|
||||
mimeType: string?
|
||||
buffer: binary
|
||||
|
||||
APIRequestContext:
|
||||
|
@ -153,7 +153,7 @@ export function createScheme(tChannel: (name: string) => Validator): Scheme {
|
||||
value: tOptional(tString),
|
||||
file: tOptional(tObject({
|
||||
name: tString,
|
||||
mimeType: tString,
|
||||
mimeType: tOptional(tString),
|
||||
buffer: tBinary,
|
||||
})),
|
||||
});
|
||||
|
@ -14,7 +14,8 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import * as types from './types';
|
||||
import mime from 'mime';
|
||||
import * as channels from '../protocol/channels';
|
||||
|
||||
export class MultipartFormData {
|
||||
private readonly _boundary: string;
|
||||
@ -35,10 +36,10 @@ export class MultipartFormData {
|
||||
this._finishMultiPartField();
|
||||
}
|
||||
|
||||
addFileField(name: string, value: types.FilePayload) {
|
||||
addFileField(name: string, value: NonNullable<channels.FormField['file']>) {
|
||||
this._beginMultiPartHeader(name);
|
||||
this._chunks.push(Buffer.from(`; filename="${value.name}"`));
|
||||
this._chunks.push(Buffer.from(`\r\ncontent-type: ${value.mimeType || 'application/octet-stream'}`));
|
||||
this._chunks.push(Buffer.from(`\r\ncontent-type: ${value.mimeType || mime.getType(value.name) || 'application/octet-stream'}`));
|
||||
this._finishMultiPartHeader();
|
||||
this._chunks.push(Buffer.from(value.buffer, 'base64'));
|
||||
this._finishMultiPartField();
|
||||
|
Loading…
Reference in New Issue
Block a user