2017-08-05 21 views
0

因此,我對node.js和javascript非常陌生,並且我根據請求加載了一個html文件,使得該服務器非常出色。這個HTML文件不包含任何它自己的數據,它只是從互聯網上獲取並顯示我寫的一些圖像和文本。我決定在網站打開時播放音頻文件。我知道這是用HTML5中的<audio>標籤輕鬆完成的,但是src =「」可以讓我從計算機取出文件並將其放置在那裏,當然,當我從另一臺計算機打開該網站時,顯然找不到該文件,因此沒有播放。我認爲音頻文件必須作爲變量保存在服務器上,並傳遞到html文件的<audio src= >標記中。我該怎麼做呢?這是一個.mp3文件(但我可以將它轉換成任何其他音頻格式),大約30秒鐘。我只是想讓它在另一臺電腦(通過互聯網)加載時播放。此外,我會如何去做與圖片或任何其他數據相同的,我不想從互聯網來源,而是作爲數據保存在我的服務器?在node.js服務器中保存和加載數據並將其傳遞給html5文件

var http = require('http'); 
var fs = require('fs'); 

var simpleServer = http.createServer(function(request, response){ 
    response.writeHead(200, {"Content-Type":"text/html"}); 
    fs.readFile('./Picture.html', null, function(error, data){ 
     if(error){ 
      response.writeHead(404); 
     } else{ 
      response.write(data); 
     } 
     response.end(); 
    }) 
}); 

simpleServer.listen(80, '0.0.0.0', function() { 
    console.log('Listening to port: ' + 80); 
}); 

console.log("Server running..."); 
+0

瞭解如何呈現靜態文件。 –

回答

1

簡答

完全使用HTML繞過,你也可以簡單地服務於音頻文件,而不是Picture.html:

fs.readFile("./audiofile.mp3", function(error, data) { 
    if (error) { 
     response.writeHead(404); 
    } else { 
     response.writeHead(200, { "Content-Type": "audio/mpeg"}); 
     response.end(data, 'utf-8'); 
    } 
}); 

注: 你將不得不更換文件名audiofile.mp3和內容類型audio/mpeg爲您要發送的文件的適當值。

檢查Mozilla's Complete List of MIME Types以獲得文件擴展名及其關聯內容類型的完整列表。

更好的答案:

HTTP模塊是相當級別的低,如果你正在學習過於複雜。

您可以使用npm install express --save命令將express.js安裝到您的項目中。

與表達你的代碼可以簡化爲:

const express = require('express'); 
const app = express(); 
const port = 80; 

app.get('/', (request, response) => { 
    response.sendFile(__dirname + '/Picture.html'); 
}); 

// Anything put in the public folder is available to the world! 
app.use(express.static(__dirname + '/public')); 

app.listen(port,() => { 
    console.log(`Listening on port: ${port}`) 
}); 

那麼你就必須將所有的文件到您的項目目錄下名爲「公共」文件夾,你可以從HTML調用它們!

+0

非常感謝你,express.js工作得很好,我現在將嘗試做大量的研究,以便理解代碼中發生的一切。這給了我很多進一步研究的起點,再次感謝你:) – RolandHall

相關問題