Tale: Posting artikel, termasuk "=", "&", yang mengakibatkan gagal disimpan

Dibuat pada 18 Des 2019  ·  6Komentar  ·  Sumber: otale/tale

Setelah masuk ke latar belakang, saya menulis artikel. Karena beberapa deskripsi memerlukan kode, saya memasukkan potongan kode.
Ketika hasilnya disimpan, ditemukan bahwa kesalahan dilaporkan di latar belakang.
io.netty.handler.codec.http.multipart.HttpPostRequestDecoder$ErrorDataDecoderException: java.io.IOException: Unable to create temporary file, C:\Users\pys1714\AppData\Local\Temp\Attr_7771572786958116046_{"cid":4,"title":
Melihat kesalahan, saya awalnya berpikir bahwa strategi untuk menyimpan adalah menyimpan sebagai file, dan ada batasan panjang data, jadi saya mulai menghapus teks dan debug. Saya menemukan bahwa sepertinya tidak ada file sementara yang dihasilkan. Jadi saya curiga ada alasan untuk membuat file.

Menurut kesalahan, temukan metode yang mendasarinya io.netty.handler.codec.http.multipart.HttpPostRequestDecoder.parseBodyAttributes()

Setelah mengamati metodenya, saya menemukan bahwa netty sedang membaca data yang saya berikan, dan kemudian membuat semacam penilaian satu per satu.

switch (currentStatus) {
case DISPOSITION:// search '='
     // other code
    break;
case FIELD:// search '&' or end of line
    // other code
    break;
default:
    // just stop
    sao.setReadPosition(0);
    contRead = false;
    break loop;
}

Saya perhatikan bahwa komentar mengatakan untuk menanyakan dua karakter "=" dan "&". Dengan mencoba, artikel saya hanya berisi "=", klik simpan, dan kesalahan dilaporkan seperti yang diharapkan:
io.netty.handler.codec.http.multipart.HttpPostRequestDecoder$ErrorDataDecoderException: java.io.IOException: 文件名、目录名或卷标语法不正确。
Saya mencoba "&" lagi, dan begitu juga.

Saya belum memiliki solusi khusus, karena kesalahannya adalah metode pribadi netty.

Komentar yang paling membantu

Menemukan solusi, https://juejin.im/post/5c63a028f265da2d9262c662

Metode khusus adalah,

  1. Buat paket di bawah src/main/Java: io.netty.handler.codec.http.multipart

  2. Temukan HttpPostStandardRequestDecoder.java dari kode sumber yang sesuai dengan netty-codec-http-4.1.30.Final.jar

  3. Salin kode sumber ke paket yang dibuat pada langkah pertama

  4. Temukan parseBodyAttributes() , dan tambahkan kode berikut ke baris pertama metode:

if(!this.request.headers().get("Content-Type").startsWith(APPLICATION_X_WWW_FORM_URLENCODED)){
          return;
}
  1. Gunakan perintah paket maven untuk mengemas kisah

Semua 6 komentar

Menemukan solusi, https://juejin.im/post/5c63a028f265da2d9262c662

Metode khusus adalah,

  1. Buat paket di bawah src/main/Java: io.netty.handler.codec.http.multipart

  2. Temukan HttpPostStandardRequestDecoder.java dari kode sumber yang sesuai dengan netty-codec-http-4.1.30.Final.jar

  3. Salin kode sumber ke paket yang dibuat pada langkah pertama

  4. Temukan parseBodyAttributes() , dan tambahkan kode berikut ke baris pertama metode:

if(!this.request.headers().get("Content-Type").startsWith(APPLICATION_X_WWW_FORM_URLENCODED)){
          return;
}
  1. Gunakan perintah paket maven untuk mengemas kisah

Hmm, setelah lama mencari, saya menemukan bahwa lapisan bawah Blade melaporkan kesalahan. Hati hancur. Cobalah metode Anda terlebih dahulu.Terima kasih

Terima kasih atas metodenya, tetapi dengan membaca kodenya, saya tidak mengerti prinsipnya. .Mengekspresikan ketidaktahuan

Tingkatkan ketergantungan Blade netty
<dependency> <groupId>io.netty</groupId> <artifactId>netty-codec</artifactId> <version>4.1.31.Final</version> </dependency>

Tingkatkan ketergantungan Blade netty
<dependency> <groupId>io.netty</groupId> <artifactId>netty-codec</artifactId> <version>4.1.31.Final</version> </dependency>

Mencobanya, yang berarti bahwa masalahnya tidak dapat diselesaikan. . .

Menemukan solusi, https://juejin.im/post/5c63a028f265da2d9262c662

Metode khusus adalah,

  1. Buat paket di bawah src/main/Java: io.netty.handler.codec.http.multipart
  2. Temukan HttpPostStandardRequestDecoder.java dari kode sumber yang sesuai dengan netty-codec-http-4.1.30.Final.jar
  3. Salin kode sumber ke paket yang dibuat pada langkah pertama
  4. Temukan parseBodyAttributes() , dan tambahkan kode berikut ke baris pertama metode:
if(!this.request.headers().get("Content-Type").startsWith(APPLICATION_X_WWW_FORM_URLENCODED)){
          return;
}
  1. Gunakan perintah paket maven untuk mengemas kisah
if(!this.request.headers().get("Content-Type").startsWith(APPLICATION_X_WWW_FORM_URLENCODED)){
          return;
}

Parameter ini turun

if(!this.request.headers().get("Content-Type").startsWith("application/x-www-form-urlencoded")){
            return;
 }

Solusi sempurna👍
A(G1% (QH{7~MTO)O438YC5
A(G1% (QH{7~MTO)O438YC5

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

xiamuguizhi picture xiamuguizhi  ·  7Komentar

gqb picture gqb  ·  7Komentar

EchoXml picture EchoXml  ·  3Komentar

biezhi picture biezhi  ·  3Komentar

biezhi picture biezhi  ·  10Komentar