一般是否可以从 AppEngine 上的BlobStore
流式传输音频文件?
如果是,那么从直接 url 流式传输.mp3文件呢?
是的!!这是我的实现:
public class Serve extends HttpServlet {
private static final long serialVersionUID = 5603629129606331547L;
public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException {
BlobKey blobKey = new BlobKey(req.getParameter("blob-key"));
BlobstoreServiceFactory.getBlobstoreService().serve(blobKey, res);
}
}
.. 这就是网络.xml:
<servlet>
<servlet-name>Serve</servlet-name>
<servlet-class><my-package>.Serve</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Serve</servlet-name>
<url-pattern>/serve</url-pattern>
</servlet-mapping>
请注意,"直接网址"(我想你的意思是getServingUrl)只存在于图像中:https://developers.google.com/appengine/docs/java/images/overview#Transforming_Images_from_the_Blobstore
一般来说,答案是否定的:
https://cloud.google.com/appengine/docs/standard/go/how-requests-are-handled#streaming_responses
正如其他人所指出的那样,您可以将数据分块以限制"成本",然后让您的客户端控制何时获取下一个块。
更好的解决方案请改用云运行:
https://cloud.google.com/blog/products/serverless/cloud-run-now-supports-http-grpc-server-streaming