fix: local storage base url (#3063)

* fix: local storage base url

* fix: test error
This commit is contained in:
chenos 2023-11-20 15:53:09 +08:00 committed by GitHub
parent 57d6a82fcc
commit 379248e5c5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 46 additions and 5 deletions

View File

@ -5,7 +5,7 @@ import { FILE_FIELD_NAME, STORAGE_TYPE_LOCAL } from '../constants';
const { LOCAL_STORAGE_BASE_URL, LOCAL_STORAGE_DEST = 'storage/uploads', APP_PORT = '13000' } = process.env;
const DEFAULT_LOCAL_BASE_URL = LOCAL_STORAGE_BASE_URL || `http://localhost:${APP_PORT}/storage/uploads`;
const DEFAULT_LOCAL_BASE_URL = LOCAL_STORAGE_BASE_URL || `/storage/uploads`;
describe('action', () => {
let app;

View File

@ -0,0 +1,43 @@
import { Repository } from '@nocobase/database';
import { Migration } from '@nocobase/server';
export default class extends Migration {
async up() {
const result = await this.app.version.satisfies('<0.15.0-alpha.5');
if (!result) {
return;
}
const r = this.db.getRepository<Repository>('storages');
const items = await r.find({
filter: {
type: 'local',
},
});
for (const item of items) {
const baseUrl = item.get('baseUrl');
if (baseUrl === '/storage/uploads') {
continue;
}
if (!baseUrl.includes('/storage/uploads')) {
continue;
}
item.set('baseUrl', '/storage/uploads');
const options = item.get('options');
options.documentRoot = 'storage/uploads';
item.changed('options', true);
item.set('options', options);
const [, pathname] = baseUrl.split('/storage/uploads/');
if (pathname && item.get('path')) {
item.set('path', pathname.replace(/\/$/, '') + '/' + item.get('path'));
} else if (pathname) {
item.set('path', pathname.replace(/\/$/, ''));
}
await item.save();
}
const c = this.db.getCollection('attachments');
const table = c.getTableNameWithSchemaAsString();
await this.db.sequelize.query(`update ${table} set url = replace(url, 'http://localhost:13000', '')`);
}
}

View File

@ -23,15 +23,13 @@ export default {
});
},
defaults() {
const { LOCAL_STORAGE_DEST, LOCAL_STORAGE_BASE_URL, APP_PORT } = process.env;
const documentRoot = LOCAL_STORAGE_DEST || 'storage/uploads';
return {
title: 'Local storage',
type: STORAGE_TYPE_LOCAL,
name: `local`,
baseUrl: LOCAL_STORAGE_BASE_URL || `http://localhost:${APP_PORT || '13000'}/${documentRoot}`,
baseUrl: '/storage/uploads',
options: {
documentRoot,
documentRoot: 'storage/uploads',
},
};
},