fix #570 : Empty file is downloaded if it does not exist

This commit is contained in:
yfujita 2016-07-08 22:23:23 +09:00
parent 8f5100fd36
commit 26bf5a3bec
2 changed files with 12 additions and 1 deletions

View file

@ -40,6 +40,7 @@ import org.elasticsearch.index.query.TermQueryBuilder;
import org.lastaflute.web.Execute;
import org.lastaflute.web.response.ActionResponse;
import org.lastaflute.web.response.HtmlResponse;
import org.lastaflute.web.response.StreamResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -138,7 +139,13 @@ public class GoAction extends FessSearchAction {
if (fessConfig.isSearchFileProxyEnabled()) {
final ViewHelper viewHelper = ComponentUtil.getViewHelper();
try {
return viewHelper.asContentResponse(doc);
final StreamResponse response = viewHelper.asContentResponse(doc);
if (response.getHttpStatus().orElse(200) == 404) {
logger.debug("Not found: " + targetUrl);
saveError(messages -> messages.addErrorsNotFoundOnFileSystem(GLOBAL, targetUrl));
return redirect(ErrorAction.class);
}
return response;
} catch (final Exception e) {
logger.debug("Failed to load: " + doc, e);
saveError(messages -> messages.addErrorsNotLoadFromServer(GLOBAL, targetUrl));

View file

@ -540,6 +540,10 @@ public class ViewHelper {
writeFileName(response, responseData);
writeContentType(response, responseData);
writeNoCache(response, responseData);
if (responseData.getHttpStatusCode() == 404) {
response.httpStatus(responseData.getHttpStatusCode());
return response;
}
response.stream(out -> {
try (final InputStream is = new BufferedInputStream(responseData.getResponseBody())) {
out.write(is);