Symfony Binary File Response fails at the end of the download process
I usually don't post any question on Stack Overflow because I always find an answer to whatever problem I'm in trouble with. But here, I haven't found a clear answer so if you can help me, thanks a lot !
I'm working on a Symfony 3.4 website. I've made a script inside my controller to return a file as a BinaryFileResponse.
$response = new BinaryFileResponse($pathtofile);
$response->setContentDisposition(ResponseHeaderBag::DISPOSITION_ATTACHMENT, $filename);
return $response;
At first, the downloading process works ok, but just at the end, an error occurs. Chrome returns a "Network error" failure and the downloaded file stays as a .crdownload instead of being rename as an .mp3 in my case. (Note : If I rename manually the file as an .mp3, it plays correctly.)
I've searched for a possible issue on the content-length property of the headers, but it seems to be sent correctly when I check the Symfony Profiler Capture here
I've found a way to bypass this error by using a stream as mentionned in the Symfony Docs, like this :
$stream = new Stream('path/to/stream');
$response = new BinaryFileResponse($stream);
My file is served by a PHP script, but it is not generated by it. Is there a way to serve it as a static file instead of a stream ?
With the stream solution, the client can't see the actual size of the file, which is not really user friendly. Also, it is really slow.
Thanks for your help !
EDIT : the first solution works on localhost, but not on prod server.
php symfony http symfony-http-foundation
add a comment |
I usually don't post any question on Stack Overflow because I always find an answer to whatever problem I'm in trouble with. But here, I haven't found a clear answer so if you can help me, thanks a lot !
I'm working on a Symfony 3.4 website. I've made a script inside my controller to return a file as a BinaryFileResponse.
$response = new BinaryFileResponse($pathtofile);
$response->setContentDisposition(ResponseHeaderBag::DISPOSITION_ATTACHMENT, $filename);
return $response;
At first, the downloading process works ok, but just at the end, an error occurs. Chrome returns a "Network error" failure and the downloaded file stays as a .crdownload instead of being rename as an .mp3 in my case. (Note : If I rename manually the file as an .mp3, it plays correctly.)
I've searched for a possible issue on the content-length property of the headers, but it seems to be sent correctly when I check the Symfony Profiler Capture here
I've found a way to bypass this error by using a stream as mentionned in the Symfony Docs, like this :
$stream = new Stream('path/to/stream');
$response = new BinaryFileResponse($stream);
My file is served by a PHP script, but it is not generated by it. Is there a way to serve it as a static file instead of a stream ?
With the stream solution, the client can't see the actual size of the file, which is not really user friendly. Also, it is really slow.
Thanks for your help !
EDIT : the first solution works on localhost, but not on prod server.
php symfony http symfony-http-foundation
add a comment |
I usually don't post any question on Stack Overflow because I always find an answer to whatever problem I'm in trouble with. But here, I haven't found a clear answer so if you can help me, thanks a lot !
I'm working on a Symfony 3.4 website. I've made a script inside my controller to return a file as a BinaryFileResponse.
$response = new BinaryFileResponse($pathtofile);
$response->setContentDisposition(ResponseHeaderBag::DISPOSITION_ATTACHMENT, $filename);
return $response;
At first, the downloading process works ok, but just at the end, an error occurs. Chrome returns a "Network error" failure and the downloaded file stays as a .crdownload instead of being rename as an .mp3 in my case. (Note : If I rename manually the file as an .mp3, it plays correctly.)
I've searched for a possible issue on the content-length property of the headers, but it seems to be sent correctly when I check the Symfony Profiler Capture here
I've found a way to bypass this error by using a stream as mentionned in the Symfony Docs, like this :
$stream = new Stream('path/to/stream');
$response = new BinaryFileResponse($stream);
My file is served by a PHP script, but it is not generated by it. Is there a way to serve it as a static file instead of a stream ?
With the stream solution, the client can't see the actual size of the file, which is not really user friendly. Also, it is really slow.
Thanks for your help !
EDIT : the first solution works on localhost, but not on prod server.
php symfony http symfony-http-foundation
I usually don't post any question on Stack Overflow because I always find an answer to whatever problem I'm in trouble with. But here, I haven't found a clear answer so if you can help me, thanks a lot !
I'm working on a Symfony 3.4 website. I've made a script inside my controller to return a file as a BinaryFileResponse.
$response = new BinaryFileResponse($pathtofile);
$response->setContentDisposition(ResponseHeaderBag::DISPOSITION_ATTACHMENT, $filename);
return $response;
At first, the downloading process works ok, but just at the end, an error occurs. Chrome returns a "Network error" failure and the downloaded file stays as a .crdownload instead of being rename as an .mp3 in my case. (Note : If I rename manually the file as an .mp3, it plays correctly.)
I've searched for a possible issue on the content-length property of the headers, but it seems to be sent correctly when I check the Symfony Profiler Capture here
I've found a way to bypass this error by using a stream as mentionned in the Symfony Docs, like this :
$stream = new Stream('path/to/stream');
$response = new BinaryFileResponse($stream);
My file is served by a PHP script, but it is not generated by it. Is there a way to serve it as a static file instead of a stream ?
With the stream solution, the client can't see the actual size of the file, which is not really user friendly. Also, it is really slow.
Thanks for your help !
EDIT : the first solution works on localhost, but not on prod server.
php symfony http symfony-http-foundation
php symfony http symfony-http-foundation
edited Nov 22 '18 at 11:55
Benjamin Martinez
asked Nov 22 '18 at 10:12
Benjamin MartinezBenjamin Martinez
134
134
add a comment |
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53428543%2fsymfony-binary-file-response-fails-at-the-end-of-the-download-process%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53428543%2fsymfony-binary-file-response-fails-at-the-end-of-the-download-process%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown