- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一些用户上传的图像,我将它们作为字节[]存储在heroku Postgres 数据库上。我正在尝试通过类似于下面的内容的 http 响应下载 jpeg 图像。
ImageModel image = ImageModel.getImage(imageID);
response().setContentType("image/jpeg");
response().setHeader("Content-disposition","attachment; filename=image.jpeg");
return ok(image.imageByteArray);
当我尝试返回它时,出现空指针异常。我正在使用 Ebean 保存和加载我的 ImageModel。当我将模型放入 JsonNode 并返回时,我可以看到该 byte[] 的数据。
"id":1,"imageByteArray":"/9j/4AAQSkZJRgABAgAAAQABAAD//gAEKgD/4gIcSUNDX1BST0ZJTEUAAQEAAAIMbGNtcwIQAABtbnRyUkdCIFhZWiAH3AABABkAAwApADlhY3NwQVBQTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWxjbXMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApkZXNjAAAA/AAAAF5jcHJ0AAABXAAAAAt3dHB0AAABaAAAABRia3B0AAABfAAAABRyWFlaAAABkAAAABRnWFlaAAABpAAAABRiWFlaAAABuAAAABRyVFJDAAABzAAAAEBnVFJDAAABzAAAAEBiVFJDAAABzAAAAEBkZXNjAAAAAAAAAANjMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0ZXh0AAAAAEZCAABYWVogAAAAAAAA9tYAAQAAAADTLVhZWiAAAAAAAAADFgAAAzMAAAKkWFlaIAAAAAAAAG+iAAA49QAAA5BYWVogAAAAAAAAYpkAALeFAAAY2lhZWiAAAAAAAAAkoAAAD4QAALbPY3VydgAAAAAAAAAaAAAAywHJA2MFkghrC/YQPxVRGzQh8SmQMhg7kkYFUXdd7WtwegWJsZp8rGm/fdPD6TD////bAEMACQYHCAcGCQgICAoKCQsOFw8ODQ0OHBQVERciHiMjIR4gICUqNS0lJzIoICAuPy8yNzk8PDwkLUJGQTpGNTs8Of/bAEMBCgoKDgwOGw8PGzkmICY5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5Of/CABEIALcBEwMAIgABEQECEQH/xAAaAAACAwEBAAAAAAAAAAAAAAAAAQIDBAUG/8QAGQEAAgMBAAAAAAAAAAAAAAAAAAECAwQF/8QAGQEAAgMBAAAAAAAAAAAAAAAAAAECAwQF/9oADAMAAAERAhEAAAHw19F7PeLYThzn0KJLO9FgsjTkOVbCxxYnbTINssIjTTBtMTkJpgAACABgDiw4fkfW+Sz2oCMi+i9nujUWQojomihahmN662qq9zDE7rxYzbIMRuQYzVAVL2oMa2UBWtiZjNtIqTZWOiWlI8v5P1vkq7EBGRdTcz2oFtbAakAOc6mDS4tWnVDEZ+j1t/mtFmbvilp5rBuLACM4AWRExgmMTAEBw/J+r8pRagISL6Lme0adtY02mDAcZDx8roc/H13CdVemx5Nc8vY38zp6+YSqslVITaQASSQSEMYgGJs4XlPV+UotQEJF1NzPaAW1tpsYmIlGTeLl9jj4+shTp2UaapTz7Z6Yaebk08sp19nR5+yVfoLOJK7D2ly7JR6Bita0OEmhxcjh+V9V5XPagIyL6LmezaLayURqbiwbQOrh9jj5OoNFO2Q5Sh2uL0ObZQk51aYWdTkTosszAuhXPp6OZyntoddV1F7XUE7IcTynq/J02gEZF1NzPZidtYA1JoUpZceSjdOMJU7gHCzoauG7c1kR13z7iu2cjnczqcrN0HCbjff3sevbxWIlnastGRmI4HkfXeRrsQEZF1NzPYtFtbcQJYdfEp2MDN1JVs04AHRsUkQufR5u23J2RGvkYOXqx4+zZ3ef1b8DSLscnAam4sTcGPjeV9V5WqxAQkXU3M9eCtrmJCz87Xlc4kZYe2NDc62itkXC6TJ7eT0NfAvpvqUXTs7OymzbxGIlBuIyaQKTiByPLen8xVYgISLarGvQnPNFXQMA1oVNsoEJkLoSRi7LFGm9mbVbmnJPo8OuNscvRaiV6OouabeT0Zcwa6UuWJdQ5YzqPlAT4XQ5+a5AQkWV2NdERqoYmBdTa4sCcZRaq0RjJ8zv0aErshbVHfxtBCc4OmVcZsAY0BJIBkWDIsM2Ddhy3ICEiyuyS6APTQmmBOEgsAnBxlGrQmnzO+oyjowMDby1KExQkmAJgAACAGgGCDPh3Yc9yAhL/8QAKRAAAQMCBAYDAQEBAAAAAAAAAQACAxARBBIwMwUUICExQRMiMiNAQv/aAAgBAAABBQJQ73xrI7UD0HrOE991fV4wLQVh3X5VIWhzmXTsvxNa1CNv+ni+xWLdkzL5Ss77OeXCNzkHOWZByI+ml60PVlxfZrFul2Vr35lDlygppsu1w4OUmb4mu+t7CMnP3RdZXBdcXamuupfP1cM/dqjRNh9Q73J5d+YlmsgbDiw/hWHd6gSC5xdRzgwHFG/NSJmKaUCHDrBIRN9Di2xWHd0CbCR5e5XpFKY3AgjX4tsVi3dDEm0ZoSAgb0wjrs1+L7FYtzQxdXDM3DxfLLJHLh3YPws7Q7V4vsVi3NDFfgVe1HE4iQAOIEjgnfeTmbJuLYvnjsJWnS4tsVi3NDEd4hUUwm1i3i1WeUChI8LmLIToSsKvfo4tsVi3dCbaCCPZXpD9IHOL3VH1If3D7otKNL0ie/NTi2zWLc0MSbRDxWNmd2Lf2o1hcRE2GMmuFks98YcjAjE5H6rDj7U4tsVi3Ot87WqSR76CmHZG5j3RwBxLimNL3RsDG4y/Rh7GWpTWAL4ysjlxdpEFYtzqkmLqe0Ke0Fa5jYGBYzxSNpcYYQzoDkJF8i+QrjDrwVi3OnESV8j0vK8VwjQTTGHsmjMYo/jbocV2axbnQ45Re/QRZHx0YU2kpiTeT1g2/bR4psVi3OjEH6HoHZO8eaimHlUjwxru5Kwo/no8V2axbnRiP0vGh/yRdA2UsnyEdl7jFmaPFNirP3zBXMFcwuYT353r103Q8Ud5p65kLmVzK5oLmguaXNBcyFzS5kLHS546j9dA81tUlMu4r2isq76mI/NW+dE+E78xi1O4Q6PJ0p/zVvnoKHQ7xU08IOvRx1J/zVvnpb0O6+yuV705/wA0/8QAJhEAAQQBBAEEAwEAAAAAAAAAAQACAxEEECAhMRITIjAyFEFCUf/aAAgBAhEBPwFVpXyt6+ClSpUqVKlSpUm9b8eD1ChjMCmxQBY+FvW/EHtT+uEMj9OUv24Vb29b8Q+3R8APKEZc+gm4n+qbFDRYXivFVq3rfiDjSR9NWPH/AEU9waE13qJ2O0qRvg6laOjetoFqPGAHk5R+Ncafj267TiGBTTl5WL9E9wbyVO/zdexvW3FjDjynNsUmOMTiHdKOUP60yOW8KuVAPFiyZS41tb1tjmMblHKJBYUkQkHKhgEac6gm5FPIPS9EOdYR4apDZO0da2rTlBOYyospr0XABOfbSU48qHKa0UVJkMLeFatWrVpvWh1OmP8AcItsLI9jKRGg3N62nTG+6Czevhb1p//EACQRAAEDBAIBBQEAAAAAAAAAAAABAhEDEBIxICFBBBMwMlEi/9oACAEBEQE/ASSSeMfA7fOSTIkkyJMjIklR27JxqPxPcUZV/fhfuycauxDAZonm7dk41t2RxMNk938G1VUyMjK7t2TjW3ZqdlR3gakipiI9RqShCiWduycHVPCDp82z6E/pRjIKv2GpJTSEv2O3ZL1VhBBW5p0OarbU+ls/tSk2Eni7dkurMkHNVqjHq0fUyEFpS3ozhDyN1xduyEEDSpSRw6k5pA1OxpUoqq9DaSyYkEEED92Td0tV+tqPbhOrLyfuzd3S1b629Pv4X7t//8QALxAAAQIDBwMCBgMBAAAAAAAAAQACESAhEBIwMVFxciIyQUBhAxNCUoHBI5GhYv/aAAgBAAAGPwJM5LP0FMZnKRnJMi8DpHhOJj3Qorp+79IXY9yZej1f4mgxifUt5SM3Tb32oxgY1qr/AP0oQAA0UAAbtdkDTpQyohQUQNP3hg64IOtjeUjN0SDW41fEEaXQUIw7v0h8wi/WC/k7oFGogS2C6oUeus1vJgjWBgqnrulalG6etGBrEJwJF0Oohe1pEoXz1IE90ChrBck3QlNhC59SOvhRMI3f2hoTFNjnuhsiPaxojSNVQ/SmbyM3nj5ti6i6Wf2u0LqEFEYNcBvKRm+CY+FEyR/sKPg+gbykZvgga21WcbIaH0DOUjN8FlpXy710nJXfitofKfrZdJqcZnKRm+CN5LzaFNZ8QxbFXrtCu4hXnFVqqgqMVnhN5SM3wXe1ZvyrgzK9rQI2UMFnHdVaqtWapI3lIzfBdMCd0XayVCNYrtWRlAvebW8pGb4O8oGqDBvbBqLyIle691RXSaFVXSVlFaLYWs5SM3wIN6iuqTqFYrpAvFROdl0KATdFGzNNH5kh4XS2zJM5SM3ngKNs2ngMyoCxu9sAKqObsBnKRm81wfnCLtLWiwAZr3wW8pGbykqJ821CiFGWGotPtYXaYTeUjN5QNThf5Zddn4RNgW5wm8pGbytwhZHRRj0qtgGE3lI3dZLJZLtWXi2EvvY0Wbydq7V2rtXau1dq7V2rtQEPMg9CMYSCUTnAJwxIPQUt98QbyDGEmvoP/8QAKRAAAgECBAcBAAIDAAAAAAAAAREAITEgQVFhEHGBkaGx8DBAwdHh8f/aAAgBAAABPyGCw6h7hPIIRWR5GWpwH4AkWhheU7jrNwCNUdTG1j/MAmwhWviODw3uFWImkxjFwYBRaXJQHUCqQytgFVzsImBParBaDk98hg0CKliRgHEfwATqYb+djg8X7hNQoCWmUYwPUBnHkwQZnUiBNyECrEmICBIi62Jh7mBDQbE2gR5AQgJUMrVrHwfB4iCCNXA3gDBLFK3jwkEEWZdI6yNHyE+bY4PF+4k22rVysBoA3o/7hgLK31ZeYYBg7SQcqeYBGBrw6kUo+8BIzCGwOPHIUAdK+LShQcwF0UccKVBoC6QE0S6DvTrDDJqA5ovaZtUBmGs66xUhXpHKqhWEKaDaGgRewT6yhEUBBqoNFBCa0BWryhZOpUEzWB18iIHWQCXycJIQIUcKqlJfDNEgaQDa6rW2g7uOwF9xdtt5eMk3A1P+5fiwAVQughmqbYqCj/yBoxLW2cpNRhfNxTVV6cjg8D7xiQWWMSAkIVCCHBtk8w4kDmgBfoiFETcKx8QRkR+BgrOh5Q5O5ZZfh9exweB9x/gwWAzCq1kNBGBneKShUxd4qKjuCCQFgY/gfVscHiff4740eV4To4ArRhlcywQSiPKjktLpgH6fBscHjff40tuXN+Chn6hh0gWOukHmLA1EoAaMGDwIEAVgMRjx/BscHjff4iy6JLBL0luUKwRMUCQJpUqLEiQkGGe0MIlqABUUj0EOiEW24rAQRpNgpYx6wEEMF7jgcf1bHB433+INbOyFTk4Cid+AF5KE93CPdgQgBqHlMqnVK9o637QiRaBVGPaINTkKlkVsjA+wZqHQzSHOAKifET6tjg8D7/Hx4FGLuFcdZmCAJmNolGUJdYYlCT5bT4zn/wBgtoMpckKFrQoASoyEMaq5ZwG4ozAedjGcxABzljQrlCmBBUPTg582xweN94hxa7gIf+kT2IzjqAaHgQLcuwgBntQ2yHD3BcDPqAwDGdntDFklke5gC+VgJ1iE2obGI0tYik/xJEFyBtAQsHNpHhzep+PH6Njg8b7xtCPOgWEuobAWije4e8PiBCFTNAoAH1oYGZlkz5QKDXXSZ+czrCQXmpvCLEOc2NYOZCggZMFHTAAIYA6DDBCHoIE24AzEfAcHjfeFwlBmm8OtOprLQs7oav3lAEeilCgD12gCDuYT3gMdwQgeDrrwAO0/pClfKCoppA2MlM7mQwCGQiLQnpNqFG+UODxvvFyi/wDhwNRClsMCkqd8WtYslBKJBrDQUvGAZoG3BywKkkwl3pDVUVAoJVyueIjw/NscHjfeBxq2EYjcqPGlgEaq02BpAvayxl5avePPtHWTibOBSou3nIBDnHhfBxz6tjg8L7xMKDtgJtjCDA3OUFFbwGqMNaDrBaIsaI9bwpLmlWu0ISETHM1MYormIbc4PA44+HzbHB4X3hKjoCeBq2NjwfC0IzHWEsBQF07weQRTQixhEzkzKaIBYQtStXGOicro448D4/FscBomgTYzYxpbR3hREouBNDnKirocJAUIeQay8XMtwRwGkA2DcarAeYwCCbvOf3i6u83HebjvE195uO83neJr7zed4Mcl/jB5mGzxvHFi9s41cKAgwYhFlkcoAbG5zgq2lOvAKkModBrFYXLECutY444+D4vh5WDysNiW+H3Q1vBpZw4EwFHYVjI75kQmKF4HolhhfBxxxzzsHlYagYTAOuD2DBZzIHCpvqEFQL6cFBC6Cyy/dPKxWrTBk54D7E+OJEDLUbr5/pY58f/aAAwDAAABEQIRAAAQQOsTBPK2EJIkAMgMjCAZW8Aizd2bDK57C6XCW03WIKySQRBtnkYMJC+CrTL7Oagz58LCW4hC+XifpWZCYtDfPHPMqCE2vPnD3QZs2+uTpePCUa3oFpJkT/tUAXcOh8UyimiegwlTtmOopqhAUHNN4gncqfEnysUkJC7iRGvg7IXmZwhj19LC7f8AtQS4snTZIvnuOKwqevhqqK08Ctnujphgwv/EACARAAICAgIDAQEAAAAAAAAAAAABETEQISBBMFFxYaH/2gAIAQIRAT8QwjknwUcIIIIFkPTgHAsQKObJHSsQRA43jUeCjD4qWvdjtN2ENxCJt0kbK+MYowx5ROy9C3sf6wMHuEu5NQZkN0NYo5xu32LSgSzZHNjJ83CFK9aX9EDhbY5zEGQjFHKdYD5JCgk9ma9DW+kfkR5QW0IS1KzrkTHpgS2Wmpit9EVvom+dXgej4Ps9LwDwktV2KLB7QUtJyKBu4MxKabGXoJF+8asMkSG2SxV6IBTD9D02PeVGCp2UPMtxobskSJEijFMrjb6CI32Rj9kw00TSnlVh0PFMV/cKfDVj/8QAHxEBAAIDAQEAAwEAAAAAAAAAAQARECExIFEwQWFx/9oACAEBEQE/ECCheV8JcrAD32wdg/yXTyX/ACDuoKNWpb5iXalvkvB/IJl6xdMdQ8UqOxv7EuoPB6OvLue9zTZFrcA+bx2x1DwKtGOFRFyKIcpg4GAYOO3ssHRLNOEVUS6fYD/IFxEoW4Tt5XFWADXWNaBuBohm/wBzpEVEWpw3+sLWvyWgmrcI3sjgPcaty47WH9Hnt5DWytMRsjO0ggG6IRVb2G4FDz2x1AfJT5OID/ZvK1BM1ycRG8Qps1AfJT5KysrBSzGO8dYNNwbmKBGK3xcudchjrHTHT8PTH//EACcQAQACAQMDAwUBAQAAAAAAAAEAESExQVEQYXEgofCBkbHB4dHx/9oACAEAAAE/EJ2IPsn9C6KBJX0DmXB6DBl9NM9UCjAsDXoDylQ6X6tuiCDum36/M8JQYQvrDWwrMRdLuYAVVHkoi01A5g6F3r3YN0jCU7wFn03gtQrHkOYluS3JFSqerKDSWl+Ilg3SkJcIvSvqPU06X126bwR+yU/j0L5PhFDS/Q27d6ZbIFywPVDbxpDOQ0QOLSaIhVaQAoHDhVfnQjyAl6gpaeLbBvWCFQSVtUbrfK29yChSkJbu8PIXiE59lxt3evOuIICwJWps3BKtgNdoMpzLId0GXLK6qgVi+jT+oOCLCbIDDDcMc6zy/UXqTXcvuC/dIPcxNUjkzcFHnzk7+evyfCUFQDBQIY7hd1MxOiVXWit8231jkDMFawbDsUzpAkYyQYlkUDbbjWDVFit3BC7bOTTHrR9oy8VtRhNogjPUKEaDYIuMR2bOoqwYUW9fePgS4qNL3jS6XkmsZBVDCimEZ76TMMLIdVlJQ8X3joloxr5Uo06MmsEqoa9Xq9nO0VEsyq3fDnaWoCIJmENBV61eI40jMjvulLVXNZ4wClKWjTV1f0hNg0mXV4VALrHiDQRAbgomHi6cQ7uqcYQAfpEoEBBQ22JqqVXiA1AO1Smzd0a07sYpPlDbuHfSmABdNw2UmoUl9Ca1Qa3EaApQ6jwxZjIUgNoCmFvzUoCGV7qJ3NL9+YAtFpCBTreHlW9S5qGCA1amxUsACxiWGmeauuSXQCsWHXePxHfz1+P4Rh0NehEJpLgOFZAwXVoAthGgR41PATzQaL9iiK23yf7DvlKDyVZ7w296iy5neHQ1h1wgK1INrkRIPQUDCgcQ1o0jr6vapHX4/h6I56XBhA/GgTEno29ioNXc+tRsDwYmvP1HzSYkI1onId5QaBeR0+0OhCbzfrcGX0vq/Qz53h1Iaweh05lHwC36iGmW/iBzQd8MeLyQNAbI/mWopRrsTndi+WT9weNIMvHRv1vBL9A9L9Knx/DoPQ16ENOjrsV+zMTUc2eDFfaeIJO6x2XErVMDw6xcXkmjQGecZ57MY5UfBQCr/wCQgbasraPsXxBg9Rz0eUHEuXLl+oT4/h0Doaw9HzqNn6goorg137GkAxP5j7wBsabNEdmI1GdTZW7pHANKZfNaVKKK5bPeMhwYUNyGeMy07fqRE8GU+0tO0WIVWjH3jFH7KvzMSDksizRLx1IuWGnpM+P4dDqPocDUB5R+lg2rRQDVbVdsQYhNK2Mwaun8kTljCeMQmB21ktz3gqrlct9rgjFeW8qAW3mFlLq0kBRPrHar6FzVm7kKZeCz3liNxY72mYeAjzdX0YoCn2p/JiAOyPRcsWPSZ8Hw6DL6GsGHRUvf71MpNT86MueJ+xiywXxmrgAASuSWLOmUuiAZdS1/jH1j5YZ26H2S6A22G0VtVaaViniBcARy3lTdICd2j2jsptWAb52xAqS03/ZKVss6TjDJ7GYHig7ZhFH0MtNRcuvxBRUxnhr+GfSUJlPb9fj+EWHQYM1Q6VXie/L7e8N723k3C9DIahvrgZ2ly9MWPuP2/MrSNzyHH7JU5+GNg1/Hv2lmZhsbAefxNeFGuT8REq2svC4jFF3LSuxLjK0C2bJ9aYkzv6wigvsr7k+pwu/aDaAFKORLldrJg1caQIPRb4/hH0EGGgwcsbuDt7h2jNINNOvDUQgBSFYiq5NfqibBKcBrNlVg42CYBCtbXywTAjQdq8VBT8MXUHv0HLDAX9R3MpOqUjRi4AEb7BwxErC2TaKlsMFdfNYKhGU5Qp7w+9TeDmIlLULuWIlb3otOHZgSlvtBLF11k9fg+EuEvpSCjFDOwCcaw3d/iY0YO20wKVkp1WFxudOUyD3iDKt5jYAqt7QOQ8vPbsS2urdcQBquZm13gktC9S+8/cdzgixZvlcwbYMjmXbV3zXKzOuCB0e0GX0obwdoGgHiB0g4P3ioKq8HXr8HwjBzLly4GEcLB22jaC6pRUd5qmKpTIAO+8oZVDbQJQYHLWWIFMZjz3YIaHQaPERgw/kl3KBUKhAphcS9gq/eaJv037wa1fcfyoWsaX3djxFpS/7L6KQel+rL4PhLgy+gtEKn+feNoL83L0uoIfAJflEF9772Vyd5Tm4CDx8Zp3xA1Ouw8Rt8PZFmBd4/1D3rb1kyPnaW7sGGpdPr7v6gW9VWUyPxiDsps6q19iU263W8GGBBjn0u/QL5vhLlvS5UB0hO1W/ggcurf0a/3OzFObAMq/qX1FNh0ZZuNR57xtP+CCbFmTjmCAFR0qH99Fq5u+n3iBYDBuuxE4t7n3jMMqnP1iOyrB9MH7il406LlwYZTVKQqtPSN83wl9Llzt2i+xHOufMTQq+E/kvo1gGgq+InIbP3BRk3ppEVcLr7R1RguPqwqCtEHsyksDyZKckctVtucxldDjp9KSDBpo2eXX2mwFHHfWUYmEXBlw6Leegz03ndkfZI/wBp/wAj/bnb/d/yf9p/kERcMN7wYhgK2QVpzV7KfrrfQzKmgL/iIrWu81ka0jilTYngv9wWcstBhFtckRads5NK0IgtsXT3IgbyKu2V/wAgIVBWiJ+X9Q35f+G6FKf0p/wsP52cH2UKv0YrCmu3uP3N3r7D+euJRHVeLEfZ6XEAiCLaMtuLusD/AGK123M0B++ILltC8aVM9KZdhxKqNpVN/MXjaeWvS/ILXyJHSy0Xe7s9pcUo0a/lxcdj7Uwxx6tuXPKXF8PD6PZfz6b+R4/fW3mGTxGiTWn5gLUHzLxAIqg73KS0umNpllaVw1oVy9+SDcA5IY0l58SwpSyJ/gI/s0x1sqUlnBKSkpKR/Y/hm/X2L89bhA1NtIfEOh0fycy5rDABgMBGKNv2D+J331g2Crew/wCMsdBq8J5lnBFs9g7csAAeHpv1fA7M36+wfnpUelvMWXI1+fRt8n2z6Fi381JeJdNmukQjkTRNoTYd8QtY7eeBwEzvL63Lly5fS4vn4Zv0/9k=","processedImage":null}
但是,如果我尝试直接从模型引用 byte[],则会出现空指针异常。我是个 Play 菜鸟,所以我不确定发生了什么。任何帮助将不胜感激。
[error] - application - Exception
java.lang.NullPointerException: null
at java.io.ByteArrayInputStream.<init>(ByteArrayInputStream.java:106) ~[na:1.8.0_51]
at controllers.Application.requestImageFile(Application.java:95) ~[classes/:2.4.2]
at router.Routes$$anonfun$routes$1$$anonfun$applyOrElse$4$$anonfun$apply$4.apply(Routes.scala:208) [classes/:na]
at router.Routes$$anonfun$routes$1$$anonfun$applyOrElse$4$$anonfun$apply$4.apply(Routes.scala:208) [classes/:na]
at play.core.routing.HandlerInvokerFactory$$anon$4.resultCall(HandlerInvoker.scala:136) [play_2.11-2.4.2.jar:2.4.2]
at play.core.routing.HandlerInvokerFactory$JavaActionInvokerFactory$$anon$14$$anon$3$$anon$1.invocation(HandlerInvoker.scala:127) [play_2.11-2.4.2.jar:2.4.2]
at play.core.j.JavaAction$$anon$1.call(JavaAction.scala:70) [play_2.11-2.4.2.jar:2.4.2]
at play.http.DefaultHttpRequestHandler$1.call(DefaultHttpRequestHandler.java:20) [play_2.11-2.4.2.jar:2.4.2]
at play.core.j.JavaAction$$anonfun$7.apply(JavaAction.scala:94) [play_2.11-2.4.2.jar:2.4.2]
at play.core.j.JavaAction$$anonfun$7.apply(JavaAction.scala:94) [play_2.11-2.4.2.jar:2.4.2]
at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24) [scala-library-2.11.6.jar:na]
at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24) [scala-library-2.11.6.jar:na]
at play.core.j.HttpExecutionContext$$anon$2.run(HttpExecutionContext.scala:40) [play_2.11-2.4.2.jar:2.4.2]
at play.api.libs.iteratee.Execution$trampoline$.execute(Execution.scala:70) [play-iteratees_2.11-2.4.2.jar:2.4.2]
at play.core.j.HttpExecutionContext.execute(HttpExecutionContext.scala:32) [play_2.11-2.4.2.jar:2.4.2]
at scala.concurrent.impl.Future$.apply(Future.scala:31) [scala-library-2.11.6.jar:na]
at scala.concurrent.Future$.apply(Future.scala:492) [scala-library-2.11.6.jar:na]
at play.core.j.JavaAction.apply(JavaAction.scala:94) [play_2.11-2.4.2.jar:2.4.2]
at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$4$$anonfun$apply$5.apply(Action.scala:105) [play_2.11-2.4.2.jar:2.4.2]
at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$4$$anonfun$apply$5.apply(Action.scala:105) [play_2.11-2.4.2.jar:2.4.2]
at play.utils.Threads$.withContextClassLoader(Threads.scala:21) [play_2.11-2.4.2.jar:2.4.2]
at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$4.apply(Action.scala:104) [play_2.11-2.4.2.jar:2.4.2]
at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$4.apply(Action.scala:103) [play_2.11-2.4.2.jar:2.4.2]
at scala.Option.map(Option.scala:146) [scala-library-2.11.6.jar:na]
at play.api.mvc.Action$$anonfun$apply$1.apply(Action.scala:103) [play_2.11-2.4.2.jar:2.4.2]
at play.api.mvc.Action$$anonfun$apply$1.apply(Action.scala:96) [play_2.11-2.4.2.jar:2.4.2]
at play.api.libs.iteratee.Iteratee$$anonfun$mapM$1.apply(Iteratee.scala:524) [play-iteratees_2.11-2.4.2.jar:2.4.2]
at play.api.libs.iteratee.Iteratee$$anonfun$mapM$1.apply(Iteratee.scala:524) [play-iteratees_2.11-2.4.2.jar:2.4.2]
at play.api.libs.iteratee.Iteratee$$anonfun$flatMapM$1.apply(Iteratee.scala:560) [play-iteratees_2.11-2.4.2.jar:2.4.2]
at play.api.libs.iteratee.Iteratee$$anonfun$flatMapM$1.apply(Iteratee.scala:560) [play-iteratees_2.11-2.4.2.jar:2.4.2]
at play.api.libs.iteratee.Iteratee$$anonfun$flatMap$1$$anonfun$apply$13.apply(Iteratee.scala:536) [play-iteratees_2.11-2.4.2.jar:2.4.2]
at play.api.libs.iteratee.Iteratee$$anonfun$flatMap$1$$anonfun$apply$13.apply(Iteratee.scala:536) [play-iteratees_2.11-2.4.2.jar:2.4.2]
at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24) [scala-library-2.11.6.jar:na]
at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24) [scala-library-2.11.6.jar:na]
at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:40) [akka-actor_2.11-2.3.11.jar:na]
at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:397) [akka-actor_2.11-2.3.11.jar:na]
at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) [scala-library-2.11.6.jar:na]
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) [scala-library-2.11.6.jar:na]
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) [scala-library-2.11.6.jar:na]
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) [scala-library-2.11.6.jar:na]
最佳答案
我个人需要更多信息来调试此问题,但是,也许您可以根据我如何使用 Ebean 在 PostgreSQL 中存储和检索图像的示例获得继续所需的信息。
模型看起来像这样:
public class User extends Model {
public static Finder<LInteger, User> find = new Finder<Integer,User>(User.class);
@Id
public Integer id;
public String name;
@Constraints.Required
@Constraints.Email
public String email;
public String password;
@Lob
public byte[] photo;
public static User findByEmail(String email) {
return find.where().eq("email", email).findUnique();
}
}
Controller 看起来像这样:
public class Application extends Controller {
public static Result userPhoto(Integer userId) {
User user = User.find.ById(userId);
if (user == null) {
return notFound();
}
if (user.photo == null) {
return ok(Play.application().getFile("/public/images/default-user.jpg"), true).as("image/jpeg");
}
return ok(new ByteArrayInputStream(user.photo)).as("image/jpeg");
}
}
希望这会有所帮助!
关于java - Play Framework 从字节数组下载图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32506111/
所以我的应用程序的评论显示在我的游戏控制台中,但是由于某种原因,当我在 google Play 商店上访问我的应用程序链接并以普通用户的身份查看它时,我没有收到新评论的通知,我的显示了 13 条评论,
一旦我在 2.3 play 项目上运行 'sbt compile',我就不能再使用 'sbt compile' 来编译任何 Play 2.2.x 项目。这是我运行 sbt 命令时的错误。 [info]
我有点困惑,想得到一个解释。 我正在使用 Java Play 2 和 Akka Actor 。我使用 play run 启动系统。 不过,我刚刚看到一个视频,使用了命令: play akka star
当我玩游戏时,我遇到两个选择play.api.mvc和 play.mvc包裹 有什么不同? 最佳答案 从戏! 2 文档: The API available in the play.api packa
从 2.3 迁移到 2.4 后,我收到此错误。我应该使用的正确导入语句是什么? error: value routesImport is not a member of object play.Pla
所以我在 google play 上有一个应用程序已经将近 6 个月了,最近两个月我更新了我的应用程序屏幕截图,从那时起,每次我更新我的应用程序时,我都开始收到应用程序拒绝。 上次我提出上诉并被接受,
我有以下代码: Snapshots.OpenSnapshotResult result; result = Games.Snapshots.open(googleApiClient, "save",
在过去 72 小时内,我为 Google Play 开发者计划支付的 Google 电子钱包付款显示为“您的购买正在处理中”。我知道这可能需要长达 48 小时,但这是他们处理时间最坏情况之后的一整天。
我在 Play 商店发布了应用程序,我不知道为什么应用程序显示预注册,我想为我的用户提供直接下载选项。伸出援手将不胜感激。 最佳答案 instructions for pre-registration
我有一个 PHP 后端,它与 Google Play 服务集成以验证从 APP 进行的购买。购买信息返回收据和签名,我需要验证购买是否正确。 我收到: { ...rest of the data
我在 Google Play Developer Console 上创建了我的 Android 应用程序的草稿。我已经填写了所有需要的信息。必需的步骤之一是“内容评级”。我已填写表格以自动分配 Goo
我已经设置好了 com.typesafe.play play_2.13 2.7.4 在项目 pom.xml 中。但是,当我尝试遵循this tutorial时,语句 pla
我在 Play 商店上发布了一个应用程序,并收到了一些评论。在Google Play开发者控制台中,我在一些评论中看不到应用程序的版本。这是我在“应用程序”标题下找到的内容。 版本代码 — 版本名称
假设 A 是所有者。我希望我们团队的 B、C 和 D 用户能够上传我们应用程序的新版本。这可能吗?来自 this我不太清楚用户有什么样的权限。如果有人对这部分有任何经验,欢迎。 最佳答案 您需要 go
我正在尝试将应用重新提交到 Google Play,但我似乎可以找到一种技术上的方法来实现此目的。 我对“您的应用主要针对 COPPA 定义的 13 岁以下 child 吗?”的回答是肯定的,然后在不
我想分享一下我在分析 Google Play 控制台的新功能时遇到的情况,并尝试找到解决方案。 正如你们许多人可能已经知道的那样,Google 已在 Google Play 控制台上发布了更新并引入了
我有两个用 playframework 编写的应用程序。我想加入另一个。我有一个数据库,我想在它们之间共享我的登录类。应用程序对类、方法、变量使用不同的名称。 我怎样才能实现它?我应该创建 jar 版
对于我的硕士论文,我需要自动将来自 Google Play 的不同 Android 应用程序的信息写入一个文本文件。所以我使用 perl 脚本语言来实现这种自动化。我的 perl 脚本可以在 Goog
我想测试子项目是如何工作的,尤其是 routes在主项目 ( this was not visible before ) 中考虑了子项目的数量。 我在这里阅读了文档: https://github.c
我正在使用 Play 框架 2.1.2,我有一个 handlere 方法返回一个 Promise,如 Play 的 2.1.2 documentation 中所述 但是 Play 抛出编译错误说: C
我是一名优秀的程序员,十分优秀!