Sto caricando un file con Jersey, ma ho solo bisogno del nome file. Internet Explorer invia l'intero percorso e, in base a ciò che si trova in FormDataContentDisposition, Jersey analizza le barre, quindi non posso nemmeno analizzarlo. Grazie.Come ottenere solo il nome file con il caricamento del file Jersey
risposta
Sembra un problema difficile. Il caso ideale naturalmente è prendere la stringa che contiene le barre e usare semplicemente string.split!
In caso contrario, l'unica strategia che posso iniziare a pensare è provare a scorrere la stringa, controllando se esistono cartelle per varie lunghezze della prima parte della stringa, ecc. Ciò può causare problemi anche se si intende trovare una cartella "MyFolder (2)" e c'è anche una "MyFolder". Non so molto della maglia, ma consiglierei di provare a trovare un modo diverso per afferrare la corda che ti serve.
- Aggiungi un evento di modifica al input di un file
- analizzare fuori il nome del file in quanto ha ancora barre, a questo punto
- Stick che apprezzano in un ingresso nascosto
Questo input nascosto poi viene inoltrato insieme al resto del modulo.
@kombat ha trovato questa soluzione e pubblicata come commento. Per meglio questo è ora ripubblicato come una risposta wiki della comunità.
Stavo ricevendo quell'errore quando ho provato il browser Eclipse. Quando ho provato il mio codice su Chrome, FormDataContentDisposition.getFileName() andava bene.
È un insetto in Jersey. Nella discussione di Nabble, http://jersey.576304.n2.nabble.com/Jersey-truncating-the-slashes-from-the-uploaded-file-name-td5984041.html, l'autore del bug si rivela e riconosce "riutilizzare il codice" per analizzare le intestazioni HTTP per analizzare lo Content-Disposition
. Tuttavia, la RFC 2616 citata non specifica che i campi Content-Disposition
devono essere sottoposti a escape in base alle regole specificate per le intestazioni HTTP. Proprio il contrario, c'è scritto che:
Content-Disposition non è parte dello standard HTTP, ma dal momento che è ampiamente implementata, stiamo documentando il suo utilizzo e dei rischi per implementatori.
Questo bug ha già una soluzione brutta nella classe org.glassfish.jersey.media.multipart.internal.MultiPartReaderClientSide
nella versione attuale di Jersey, tuttavia non funziona con IE 11 ed Edge perché controlla User-Agent parte che ha cambiato. C'è una richiesta pull con correzione: https://github.com/jersey/jersey/pull/233/files, ma per quasi 2 anni nessuno si è preoccupato di unirlo.
Hai 3 soluzioni:
1) aplly una 'correzione' sul lato client, che è secondo me un approccio sbagliato, perché non c'è un bug su lato client, il bug è a Jersey!
2) Variazione Jersey ad altri framework, in cui gli sviluppatori di prendere i problemi di compatibilità più seriamente invece di concentrarsi sulla massimizzazione il riutilizzo del codice, ecc
3) Patch Jersey manualmente. Scarica i sorgenti, applica la richiesta di pull, compila e rilascia con il numero di versione modificato.
- 1. Come ottenere solo il nome del file nel preprocessore?
- 2. Ottenere il nome del file di caricamento prima di caricare con File Upload jQuery plugin di
- 3. Ottenere il nome del file bitmap
- 4. Come ottenere il tipo MIME di file caricato a Jersey
- 5. File di caricamento di PrimeFaces che mostra il nome del file dopo il caricamento
- 6. Estrai solo il nome del file da FileItem's name
- 7. php Nome file univoco durante il caricamento
- 8. PHP, ottenere il nome del file senza estensione di file
- 9. Come caricare un file solo una volta con il plugin di caricamento del file blueimp?
- 10. Django ImageField cambia il nome del file al caricamento
- 11. Come ottenere il caricamento del file senza un modulo
- 12. Da un file incluso, come posso ottenere il nome file del file facendo il compreso?
- 13. Cambia il nome del file di caricamento in cURL?
- 14. Rails, Ottenere il nome di un file durante il caricamento di un file sul server
- 15. Come ottenere il nome del file dal modulo di caricamento utilizzando jQuery?
- 16. Come simulare il caricamento del file del browser con HttpWebRequest
- 17. @MultipartForm Come ottenere il nome del file originale?
- 18. Jenkins Parameterized Crea il file di caricamento e salva il nome del file originale
- 19. Limita il caricamento del file ad alcune estensioni di file
- 20. Come configurare l'interfaccia utente Swagger, il jersey e il caricamento dei file?
- 21. Come ottenere il nome file dal percorso file in swift
- 22. Come ottenere il nome file del modulo __main__ in Python?
- 23. Come ottenere il nome del file di input in MRjob
- 24. Come ottenere il nome/percorso del file Excel in VBA
- 25. Come posso ottenere il nome del file da request.FILES?
- 26. Come ottenere il nome del file di .EXE
- 27. Come ottenere il percorso assoluto del nome file javascript corrente
- 28. Come ottenere il nome file (o eliminare un file) utilizzando l'handle del file
- 29. come ottenere il nome file del chiamante, il nome del metodo in python
- 30. Salvare il file Javascript con nome file
Grazie.Quello che ho finito è stato aggiungere un evento di modifica al tag di input del file e al suo interno analizzare il nome del file dato che ha ancora delle barre a questo punto e inserire quel valore in un input nascosto. Questo input nascosto viene quindi inviato insieme al resto del modulo. – kombat
Felice di vedere che sei stato in grado di risolverlo. – Drifter64
aggiungi la tua risposta a questa domanda piuttosto che inserirla in un commento, in modo che sia più applicabile –