之前测试功能写过一次,因为代码忘记保存,导致真正用到的时候怎么也想不起来当初怎么写的了,复现后还是写个文章记录一下,省的下次再忘记。
php后端
/**
 * 图片保存到本地
 */
public function uploadLocalImage()
{
    try {
        $img = $this->_request->file('img');
        if (empty($img)) {
            throw new \Exception('缺少图片参数');
        }
        $writeDir = "images/".date('Ymd');
        $dir = "D:/phpstudy_pro/WWW/vkm_locarun_dist/dist/".$writeDir;
        //$dir = "local_run/" . date('Ymd'); //linux调试地址
        if (!file_exists($dir)) {
            mkdir($dir, 0777, true);
        }
        $extension = substr($img->getMimeType(), -3);
        if ($extension == 'bmp') {
            $fileName = UtilService::createOrderNo() . '.bmp';
        }if ($extension == 'png') {
            $fileName = UtilService::createOrderNo() . '.png';
        }else{
            $fileName = UtilService::createOrderNo() . '.jpg';
        }
        $imgContent = file_get_contents($img);
        file_put_contents($dir . '/' . $fileName, $imgContent);
        $localhostImg = env('CLIENT_URL') . $writeDir . '/' . $fileName;
        //http://127.0.0.1:8000/xxx/20231016/xxx.jpg 读取方式
        $this->returnSuccess($localhostImg);
    } catch (\Exception $e) {
        $this->returnFault($e->getMessage());
    }
}
 
Unity C#
////// 上传文件到服务器 /// /// 文件路径 void UploadToLocalServer(string[] filePaths) { int count = filePaths.Length; urls = new string[count]; isUploaded = new bool[count]; string filePath; //文件命为上传OSS时的key for (int i = 0; i < count; i++) { int current = i; filePath = filePaths[current]; if (File.Exists(filePath)) { File.SetAttributes(filePath, FileAttributes.Normal); StartCoroutine(UploadToLocal(filePath, current)); } else { urls[current] = "none"; } } } IEnumerator UploadToLocal(string filePath, int index) { byte[] fileByte = File.ReadAllBytes(filePath); WWWForm form = new WWWForm(); //根据自己上传的文件修改格式,img是接口请求json参数的key, //最后一个参数是图片的mimeType, 因为上传的图片有jpg、png、bmp几种格式,此处取文件后缀和image组合字符串作为mimeType form.AddBinaryData("img", fileByte, Path.GetFileName(filePath), $"image/{Path.GetExtension(filePath)}"); Helper.Log($"{Config.SystemConfig.sendHost}/uploadLocalImage"); using (UnityWebRequest www = UnityWebRequest.Post($"{Config.SystemConfig.sendHost}/uploadLocalImage", form)) { yield return www.SendWebRequest(); if (www.result == UnityWebRequest.Result.ConnectionError || www.result == UnityWebRequest.Result.ProtocolError) { urls[index] = "error"; Helper.LogError($"[ERROR] {filePath}, msg: {www.error}"); } else { string text = www.downloadHandler.text; //Helper.Log("服务器返回值" + text); JObject json = JObject.Parse(text); if (json["msg"].ToString().Equals("success")) { urls[index] = json["data"].ToString(); Helper.Log($"[SUCCESS] {urls[index]}"); } else { urls[index] = "error"; Helper.LogError($"[ERROR] {filePath}, msg: {text}"); } isUploaded[index] = true; } } }
搞定。
猜你喜欢
网友评论
- 搜索
 
- 最新文章
 
- 热门文章
 
