Support SVG (#3883)
* Update add-file.ts * Update package.json * Revert "Update add-file.ts" This reverts commit ba0fe83b54a44493447208dfb3cc304a60df6fdd. * Update add-file.ts * Update package.json * Update add-file.ts * Update add-file.ts * Create image.svg * Update api.ts
This commit is contained in:
		
							parent
							
								
									00d5fdfc13
								
							
						
					
					
						commit
						018837db0b
					
				
					 4 changed files with 21 additions and 1 deletions
				
			
		|  | @ -43,6 +43,7 @@ | ||||||
| 		"@types/gulp-uglify": "3.0.6", | 		"@types/gulp-uglify": "3.0.6", | ||||||
| 		"@types/gulp-util": "3.0.34", | 		"@types/gulp-util": "3.0.34", | ||||||
| 		"@types/is-root": "1.0.0", | 		"@types/is-root": "1.0.0", | ||||||
|  | 		"@types/is-svg": "3.0.0", | ||||||
| 		"@types/is-url": "1.2.28", | 		"@types/is-url": "1.2.28", | ||||||
| 		"@types/js-yaml": "3.11.4", | 		"@types/js-yaml": "3.11.4", | ||||||
| 		"@types/katex": "0.5.0", | 		"@types/katex": "0.5.0", | ||||||
|  | @ -136,6 +137,7 @@ | ||||||
| 		"http-signature": "1.2.0", | 		"http-signature": "1.2.0", | ||||||
| 		"insert-text-at-cursor": "0.1.1", | 		"insert-text-at-cursor": "0.1.1", | ||||||
| 		"is-root": "2.0.0", | 		"is-root": "2.0.0", | ||||||
|  | 		"is-svg": "3.0.0", | ||||||
| 		"is-url": "1.2.4", | 		"is-url": "1.2.4", | ||||||
| 		"js-yaml": "3.12.0", | 		"js-yaml": "3.12.0", | ||||||
| 		"jsdom": "13.1.0", | 		"jsdom": "13.1.0", | ||||||
|  |  | ||||||
|  | @ -4,10 +4,11 @@ import * as fs from 'fs'; | ||||||
| import * as mongodb from 'mongodb'; | import * as mongodb from 'mongodb'; | ||||||
| import * as crypto from 'crypto'; | import * as crypto from 'crypto'; | ||||||
| import * as debug from 'debug'; | import * as debug from 'debug'; | ||||||
| import fileType = require('file-type'); |  | ||||||
| import * as Minio from 'minio'; | import * as Minio from 'minio'; | ||||||
| import * as uuid from 'uuid'; | import * as uuid from 'uuid'; | ||||||
| import * as sharp from 'sharp'; | import * as sharp from 'sharp'; | ||||||
|  | import * as fileType from 'file-type'; | ||||||
|  | import * as isSvg from 'is-svg'; | ||||||
| 
 | 
 | ||||||
| import DriveFile, { IMetadata, getDriveFileBucket, IDriveFile } from '../../models/drive-file'; | import DriveFile, { IMetadata, getDriveFileBucket, IDriveFile } from '../../models/drive-file'; | ||||||
| import DriveFolder from '../../models/drive-folder'; | import DriveFolder from '../../models/drive-folder'; | ||||||
|  | @ -320,6 +321,8 @@ export default async function( | ||||||
| 				const type = fileType(buffer); | 				const type = fileType(buffer); | ||||||
| 				if (type) { | 				if (type) { | ||||||
| 					res([type.mime, type.ext]); | 					res([type.mime, type.ext]); | ||||||
|  | 				} else if (isSvg(buffer)) { | ||||||
|  | 					res(['image/svg+xml', 'svg']) | ||||||
| 				} else { | 				} else { | ||||||
| 					// 種類が同定できなかったら application/octet-stream にする
 | 					// 種類が同定できなかったら application/octet-stream にする
 | ||||||
| 					res(['application/octet-stream', null]); | 					res(['application/octet-stream', null]); | ||||||
|  |  | ||||||
							
								
								
									
										14
									
								
								test/api.ts
									
										
									
									
									
								
							
							
						
						
									
										14
									
								
								test/api.ts
									
										
									
									
									
								
							|  | @ -808,6 +808,20 @@ describe('API', () => { | ||||||
| 
 | 
 | ||||||
| 			expect(res).have.status(400); | 			expect(res).have.status(400); | ||||||
| 		})); | 		})); | ||||||
|  | 
 | ||||||
|  | 		it('SVGファイルを作成できる', async(async () => { | ||||||
|  | 			const izumi = await signup({ username: 'izumi' }); | ||||||
|  | 
 | ||||||
|  | 			const res = await assert.request(server) | ||||||
|  | 				.post('/drive/files/create') | ||||||
|  | 				.field('i', izumi.token) | ||||||
|  | 				.attach('file', fs.readFileSync(__dirname + '/resources/image.svg'), 'image.svg'); | ||||||
|  | 
 | ||||||
|  | 			expect(res).have.status(200); | ||||||
|  | 			expect(res.body).be.a('object'); | ||||||
|  | 			expect(res.body).have.property('name').eql('image.svg'); | ||||||
|  | 			expect(res.body).have.property('type').eql('image/svg+xml'); | ||||||
|  | 		})); | ||||||
| 	}); | 	}); | ||||||
| 
 | 
 | ||||||
| 	describe('drive/files/update', () => { | 	describe('drive/files/update', () => { | ||||||
|  |  | ||||||
							
								
								
									
										1
									
								
								test/resources/image.svg
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								test/resources/image.svg
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1 @@ | ||||||
|  | <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256"><path fill="#FF40A4" d="M128 80c-16 4-20 24-20 48v16c0 8-8 16-20.3 8 4.3 20 24.3 28 40.3 24s20-24 20-48v-16c0-8 8-16 20.3-8C164 84 144 76 128 80"/><path fill="#FFBF40" d="M192 80c-16 4-20 24-20 48v16c0 8-8 16-20.3 8 4.3 20 24.3 28 40.3 24s20-24 20-48v-16c0-8 8-16 20.3-8C228 84 208 76 192 80"/><path fill="#408EFF" d="M64 80c-16 4-20 24-20 48v16c0 8-8 16-20.3 8C28 172 48 180 64 176s20-24 20-48v-16c0-8 8-16 20.3-8C100 84 80 76 64 80"/></svg> | ||||||
| After Width: | Height: | Size: 505 B | 
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue