之前测试功能写过一次,因为代码忘记保存,导致真正用到的时候怎么也想不起来当初怎么写的了,复现后还是写个文章记录一下,省的下次再忘记。
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; } } }
搞定。
猜你喜欢
- 11天前(四川率先建立“双定向”基层文化人才职称评审通道机制)四川率先建立“双定向”基层文化人才职称评审通道机制
- 11天前(郭富城热舞劲歌演唱会)郭富城年度压轴《新濠尊属系列郭富城梦幻舞林演唱会2023》
- 11天前(上海文旅产业发展高峰论坛)《上海打造文旅元宇宙新赛道行动方案》发布
- 11天前(fender japan hybrid)Fender东京旗舰店盛大开幕在即,开售商品和店内服务提前揭晓
- 11天前(夏日旅行海报)夏日旅行|精简行囊 向快乐进发
- 11天前(瑞虎7plus2021款)重塑10万级SUV价值标杆,全新一代瑞虎7PLUS冠军版给你惊喜
- 11天前(甘肃文旅项目)甘肃省文旅产业链招商引资推介会在天水成功举办
- 11天前(殷建祥简历)全国十大牛商解码:殷建祥如何用178天技术突围打造星空梦星空房
- 11天前(锦江 iu)锦江荟APP原生鸿蒙版正式上线打造全场景旅行服务新体验
- 11天前(泸沽湖大酒店地址)泸沽湖岚岳酒店盛大开业|以摩梭文化为魂,打造高端度假新地标
网友评论
- 搜索
- 最新文章
- (2020广州车展哈弗)你的猛龙 独一无二 哈弗猛龙广州车展闪耀登场
- (哈弗新能源suv2019款)智能科技颠覆出行体验 哈弗重塑新能源越野SUV价值认知
- (2021款全新哈弗h5自动四驱报价)新哈弗H5再赴保障之旅,无惧冰雪护航哈弗全民电四驱挑战赛
- (海南航空现况怎样)用一场直播找到市场扩张新渠道,海南航空做对了什么?
- (visa jcb 日本)优惠面面俱到 JCB信用卡邀您畅玩日本冰雪季
- (第三届“堡里有年味·回村过大年”民俗花灯会活动)第三届“堡里有年味·回村过大年”民俗花灯会活动
- (展示非遗魅力 长安启源助力铜梁龙舞出征)展示非遗魅力 长安启源助力铜梁龙舞出征
- (阿斯塔纳航空公司)阿斯塔纳航空机队飞机数量增至50架
- (北京香港航班动态查询)香港快运航空北京大兴新航线今日首航
- (我在港航“呵护”飞机 每一次安全着陆就是最好的荣誉)我在港航“呵护”飞机 每一次安全着陆就是最好的荣誉
- 热门文章