akka http kullanarak basit bir dosya yüklemeyi uygulamaya çalışıyorum. şöyle girişimim görünür: yüklenemezAkka-HTTP: Dosya Yükleme
- Dosyalar yapılandırılmış varlık boyutundan daha büyük:
Request Content-Length 24090745 exceeds the configured limit of 8388608
- üste iki yüklemeleri yürütülmesi
import akka.actor.ActorSystem import akka.event.{LoggingAdapter, Logging} import akka.http.scaladsl.Http import akka.http.scaladsl.model.{HttpResponse, HttpRequest} import akka.http.scaladsl.model.StatusCodes._ import akka.http.scaladsl.server.Directives._ import akka.stream.{ActorMaterializer, Materializer} import com.typesafe.config.Config import com.typesafe.config.ConfigFactory import scala.concurrent.{ExecutionContextExecutor, Future} import akka.http.scaladsl.model.StatusCodes import akka.http.scaladsl.model.HttpEntity import java.io._ import akka.stream.io._ object UploadTest extends App { implicit val system = ActorSystem() implicit val executor = system.dispatcher implicit val materializer = ActorMaterializer() val config = ConfigFactory.load() val logger = Logging(system, getClass) val routes = { pathSingleSlash { (post & extractRequest) { request => { val source = request.entity.dataBytes val outFile = new File("/tmp/outfile.dat") val sink = SynchronousFileSink.create(outFile) source.to(sink).run() complete(HttpResponse(status = StatusCodes.OK)) } } } } Http().bindAndHandle(routes, config.getString("http.interface"), config.getInt("http.port")) }
bu kodla çeşitli faktörler vardır
dead letters encountered.
istisnasıyla sonuçlanır.
Boyut sınırlamalarının üstesinden gelmenin en iyi yolu nedir ve dosyayı daha sonra nasıl yükleyeceğim, böylece varolan dosyanın üzerine yazılacak (eşzamanlı yüklemeler yok sayılacak)?
Teşekkürler, onSuccess kullanarak karşılaşılan 'ölü harfler' sorununu çözer. –
Diğer bir sorun hakkında bir fikir eklediniz. – mattinbits
Merhaba, Teşekkürler, Maksimum içerik uzunluğunu daha büyük bir değere ayarlamanın tüm içeriğin belleğe alındığı anlamına gelmediğini öğrendim. Bu, bunu çözmek için güvenli bir yoldur. Cevabını bastırabilirdim ama yeterli kredim yok :-( –