问题描述
在本地上传和检索图像文件对我来说很好 - 但在构建并部署到 Heroku 之后,文件上传不再“真正”有效 - 尽管我的 API 在上传时返回“成功”。
这是我的流程:上传到我的服务器后(与 angular 11 应用程序并排)- 然后我(从客户端)调用 api 端点以获取“iploads”文件夹中文件的所有名称。 “ fs.readdir”函数返回最近上传的文件的名称 - 但是当我对部署的目录“bash”时,实际文件无处可寻 - 图像“src”链接中使用的文件名显示为“损坏” - 此外,http 响应是:“503 服务不可用”
当我在本地运行服务器和客户端时,所有这些都可以正常工作 - 所以(下班后)我强烈怀疑在我部署后,在 FileInterceptor 中设置的“目标”找不到文件夹(甚至无法创建它)我指定的。
```@Post()
@UseInterceptors(
FileInterceptor('image',{
storage: diskStorage({
destination: (req,file,cb) => cb(null,resolve('.','src/assets','uploads')),filename:(req,cb) => {
let fn = file.originalname;
cb(null,/* file.originalname */ fn);
}
})
}),)
async uploadedFile(@UploadedFile() file) {
const response = {
originalname: file.originalname,filename: file.filename,};
return {
status: HttpStatus.OK,message: 'Image uploaded successfully!',data: response,};}```
```uploadImages() {
var fd = new FormData();
fd.append('image',this.selectedFile,this.selectedFile.name);
let uri = 'http://localhost:4200';
if(environment.production === true){
uri = 'https://ngmonetscat.herokuapp.com';
} else{
uri = 'http://localhost:4200';
}
this.https
.post( uri + '/api/uploadimage/',fd).subscribe(()=>{
});}```
```public getimageFiles() {
let promise = new Promise(function(resolve,reject) {
const fs = require('fs');
var images = [];
fs.readdir('./src/assets/uploads/',(err,files) => {
if (err) {
console.log('file reader error' + err.message)
reject(err);
}else{
files.forEach(file => {
if (file.toLowerCase().includes('.png') ||
file.toLowerCase().includes('.jpg') ){
console.log(file);
images.push(file);
}
});
resolve(images);
}
})
});return promise;}```
```loadImages() {
let uri = 'http://localhost:4200';
let imagefolder = '';
if(environment.production === true){
uri = 'https://ngmonetscat.herokuapp.com';
imagefolder = '/assets/uploads/';
} else{
uri = 'http://localhost:4200';
imagefolder = '/assets/uploads/';
}
this.https
.get( uri + '/api/hello/')
.subscribe(res => {
console.log(JSON.stringify(res));
for (const key in res) {
this.availableImages.push( imagefolder + res[key]);
}});}```
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)