Domanda

Quando un file dire 100 MB di dimensione viene caricato dal browser nascerà tenere tutto i dati nella memoria o negozi nel disco temporaneo. Dopo aver attraversato doc Primavera So come impostare una directory temporanea, ma voglio sapere che cosa accadrà se non ricordare che.

sto avendo seguente dichiarazione:

<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/>

Bean:

public class FileHolder {

    private MultipartFile file;

    public void setFile(MultipartFile file) {
        this.file = file;
    }

    public MultipartFile getFile() {
        return file;
    }
}

Sarà l'oggetto "file" nel chicco sopra ritenere che i dati di 100 MB?

È stato utile?

Soluzione

Un po 'più scavando nel javadoc mostra che il massimo predefinito in memoria dimensione è 10240 byte. Da che mi piacerebbe pensare che l'operazione di caricamento meno di 10kB si tiene in memoria, qualcosa di più grande sarà memorizzato su disco. Se non si specifica la posizione del disco, che sarà probabilmente usare un predefinito (direi che userà la directory tmp di default del sistema).

Altri suggerimenti

Se non si imposta la directory temp CommonsMultipartResolver salverà i file temporanei nella directory temporanea del contenitore di servlet.

L'oggetto "file" nel tuo esempio non detiene i dati che simile a un riferimento java.io.File. È necessario per ottenere i dati con file.getBytes().

Sì, ma se è memorizzato su disco verrà eliminato dopo che la richiesta è stata elaborata. È possibile impostare la soglia per quando sarà memorizzato su disco:

Nella sua definizione di fagioli multipartresolver, per esempio:.

<property name="maxUploadSize" value="1000000" /> 
<property name="maxInMemorySize" value="1000" /> 

Se è tenuto in memoria, è possibile memorizzare nella sessione e elaborarlo nella prossima richiesta, per esempio, come ad esempio se siete in attesa di una conferma da parte dell'utente.

In avvio primavera, spring.servlet.multipart.file-size-threshold specifica la soglia dimensionale dopo la quale verranno scritti i file su disco.

Il valore predefinito della proprietà è pari a zero. Significa per impostazione predefinita, memorizza tutti i file in una posizione temporanea (può essere configurato tramite spring.servlet.multipart.location).

Link: proprietà di avvio di primavera

Essere a conoscenza di alcuni bug sulle implementazioni qui: https: // GitHub .com / primavera-progetti / primavera-boot / temi / 9073

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top