国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

文件上傳哪里做錯(cuò)了,請(qǐng)各位指導(dǎo)一下

ziyoren

問題描述

上傳文件后,保存的文件不正確。

上傳的是圖片文件,得到的下面截圖的內(nèi)容

截圖

程序代碼或配置

<?php

namespace app\api\controller;

use support\Request;
use Tinywan\ExceptionHandler\Exception\ServerErrorHttpException;
use Tinywan\Jwt\JwtToken;
use Tinywan\Storage\Storage;  //這里用到http://wtbis.cn/plugin/21 @Tinywan

class UploadController
{

//照著官方文檔的示例寫的 http://wtbis.cn/doc/webman/request.html#%E8%8E%B7%E5%8F%96%E4%B8%8A%E4%BC%A0%E6%96%87%E4%BB%B6
    public function file(Request $request)
    {
        $uid = JwtToken::getCurrentId();
        $files = $request->file();
        $result = [];
        foreach ($files as $file) {
            if ($file && $file->isValid()) {
                var_export($file->getUploadExtension());  //輸出''
                echo PHP_EOL;
                var_export($file->getUploadMimeType());  //輸出 'application/json'
                echo PHP_EOL;
                var_export($file->getUploadErrorCode());  //輸出 0
                echo PHP_EOL;
                var_export($file->getUploadName());  //輸出 'file-1685872373882'
                echo PHP_EOL;
                var_export($file->getSize());  //輸出 34
                echo PHP_EOL;
                var_export($file->getPath());  //輸出 '/tmp'
                echo PHP_EOL;
                var_export($file->getRealPath()); //輸出 '/tmp/workerman.upload.EEdPEm'
                echo PHP_EOL;

                $filePath = '/uploads/' . $uid . '/' . $file->getUploadName();
                $file->move(public_path() . $filePath);
                array_push($result, ['url' => $this->getFullUrl($filePath)]);
            } else {
                throw new ServerErrorHttpException('未找到上傳的文件');
            }
        }
        return response_json($result);
    }

    // 用的Tinywan的上傳組件
    public function img(Request $request)
    {
        Storage::config();
        $res = Storage::uploadFile();
        return response_json($res);
    }

    public function getFullUrl($file = '')
    {
        $request = request();
        return $request->url() . $file;
    }
}

config/plugin/tinywan/storage/app.php 本地上傳的配置如下

<?php

return [
    'enable' => true,
    'storage' => [
        'default' => 'local', // local:本地 oss:阿里云 cos:騰訊云 qos:七牛云
        'single_limit' => 1024 * 1024 * 200, // 單個(gè)文件的大小限制,默認(rèn)200M 1024 * 1024 * 200
        'total_limit' => 1024 * 1024 * 200, // 所有文件的大小限制,默認(rèn)200M 1024 * 1024 * 200
        'nums' => 10, // 文件數(shù)量限制,默認(rèn)10
        'include' => [], // 被允許的文件類型列表
        'exclude' => [], // 不被允許的文件類型列表
        // 本地對(duì)象存儲(chǔ)
        'local' => [
            'adapter' => \Tinywan\Storage\Adapter\LocalAdapter::class,
            'root' => public_path().'/uploads/',
            'dirname' => function () {
                return date('Ymd');
            },
            'domain' => 'http://192.168.1.78:8788/',
            'uri' => 'uploads/', // 如果 domain + uri 不在 public 目錄下,請(qǐng)做好軟鏈接,否則生成的url無法訪問
            'algo' => 'sha1',
        ],
        //......省略其他配置.....
    ]
]

重現(xiàn)問題的步驟

前后端分離,前端用的uviewui的上傳文件請(qǐng)求。

截圖

操作系統(tǒng)環(huán)境及workerman/webman等具體版本

Webman-framework v1.5.5

Alpine Linux 3.16.0

Workerman version:4.1.9

PHP version:8.1.7

Event-Loop:\Workerman\Events\Select

1498 3 0
3個(gè)回答

ziyoren

寫了一個(gè)普通的表單上傳,正常

    <form action="/api/upload/file" method="post" enctype="multipart/form-data">
        <input type="file" name="file" />
        <input type="submit" value="Upload" />
    </form>

這樣上傳成功了

AJAX方式上傳好像Content-Type判斷有問題

  • 暫無評(píng)論
ziyoren

截圖

這是本地上傳時(shí)就提交了錯(cuò)誤的數(shù)據(jù)?

  • ziyoren 2023-06-04

    是前端少傳了參數(shù),導(dǎo)致的上述問題。

ziyoren

已解決,前端代碼少指定了上傳文件,導(dǎo)致的

  • 暫無評(píng)論
年代過于久遠(yuǎn),無法發(fā)表回答
??