Ich verwende den folgenden Code, um Dateien von S3 herunterzuladen. Der Code funktioniert gut für mittlere bis große Dateigrößen, aber für extrem kleine Dateigrößen (3kb - eine Zeile in der TXT-Datei) schlägt der Download fehl.Nicht in der Lage, kleine Dateien herunterzuladen, aber große Dateien herunterladen
// Controller
def download() {
Request request = Request.get(params.int("id"))
response.setContentType("application/octet-stream")
myService.downloadFileFromS3(request.origFileName, response)
}
void downloadFileFromS3(String fileName, HttpServletResponse response) {
String fullFileNameWithExtension = fileName
response.setHeader("Content-disposition", "attachment;filename=${fullFileNameWithExtension}")
InputStream is = getS3Client().getObject(getBucketName(), fullFileNameWithExtension).getObjectContent()
OutputStream outputStream = response.getOutputStream()
byte[] buffer = new byte[1024];
int length
log.info("This is the length: " + length)
while ((length = is.read(buffer)) != -1) {
log.info("Came here with length: " + length)
outputStream.write(buffer, 0, length)
}
is.close()
}
Abmelden put für kleine Dateien:
This is the length: 0
Came here with length: 15
GroovyPagesServlet: "/WEB-INF/grails-app/views/request/download.gsp" not found
Log-Ausgang für große Dateien:
This is the length: 0
Came here with length: 1024
Came here with length: 1024
Came here with length: 1024
Came here with length: 1024
Came here with length: 1024
Came here with length: 1024
Came here with length: 1024
Came here with length: 1024
Came here with length: 1024
Came here with length: 1024
Came here with length: 1024
Came here with length: 531
So scheint es, dass für kleine Dateien, es ist Suchen nach download.gsp
Ansicht. Aber es sollte nicht nach dieser Ansicht suchen, da ich Zeug in die
Wie funktioniert es nicht? Welche Ausnahmen werden ausgelöst? Welche Fehler bekommst du? Sie müssen mehr Details angeben. –
@JoshuaMoore Ich habe mit mehr Details aktualisiert. – Anthony
Probieren Sie eine 'outputStream.flush()', bevor Sie von der Methode zurückkehren. –