| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 223 人关注过本帖
标题:请教:上传文件的问题
只看楼主 加入收藏
wcx_cc
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:52
帖 子:385
专家分:1202
注 册:2015-10-2
结帖率:93.75%
收藏
已结贴  问题点数:50 回复次数:2 
请教:上传文件的问题
有一段C# 代码,想变成VFP的语句,大概思路怎么做?非常感谢!
 这是一个上传图像到远程服务器,报文的头部还比较清楚,但是报文内容的结构还没弄清楚, 因为这不是单纯传一个图像,如果单纯只传一张图像,
 我认为可能好办,但是这里还要首先附加上传一个 json,这个json 的内容,是为了说明图像是什么人的,有身份证号sfzh,也有检查日期 examDate,有体检类型 type 5(心电图是5),现在是,如何将一个图像文件 mn.jpg,配合json,构成报文内容一并上传。
敬请高手们过目一下,再次感谢!!!

string url = report_addr +$"thirdApi/saveHealthExamPile":
NameValueCollection nvc = new NameValueCollection ();
nve.Add("param,“{\“idNo\ :\  + sfzh + “\’,\"examDate\":\"" + tjb. Jdrq. Value. ToString("yyyy-M-dd) + "\, \"type\":\"5\}"):
var task = uploadGXTJ(lt.nvc,ms. ToArray(),url,partner_license):

async
Task<qmResult>
uploadGXTJ
LoginToken
lt.
NameValueCollection formData,
byte[]
file.
string url,
string partner_license)
try
using(HttpClient webClient = new HttpClient())
// 添加表单数据
//webClient.Headers.Add("Content-Type","multipart/form-data");
webClient. DefaultRequestHeaders.AcceptEncoding. Add(new StringWithQualityHeaderValue("utf-8"));
webClient. DefaultRequestHeaders.Add("access_token", lt.access_token);
webClient. DefaultRequestHeaders.Add("partner-license", partner_license);

using (var mformData = new MultipartFormDataContent ()
var fileContent = new StreamContent(new MemoryStream(file));
fileContent.Headers.ContentType = MediaTypeHeaderValue. Parse("multipart/form-data");

mformData.Add(fileContent,“file", Path.GetFileName("mn.jpg"));
foreach (var key in formData.AllKeys)
var keyValueContent = new StringContent(formData[key]):
mformData.Add (keyValueContent, key): // 替换为你的表单键名

[此贴子已经被作者于2024-8-19 08:39编辑过]

搜索更多相关主题的帖子: new var Add 图像 报文 
2024-08-19 00:06
yiyanxiyin
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:9
帖 子:242
专家分:1856
注 册:2023-6-29
收藏
得分:50 
可以试一下WinHttp.WinHttpRequest.5.1这个控件, 参考代码:

LOCAL loHttpRequest AS "WinHttp.WinHttpRequest.5.1"  
LOCAL lcUrl AS STRING, lcBoundary AS STRING  
LOCAL lcBody AS STRING, lcFileContent AS STRING  
LOCAL lcFileName AS STRING, lcFilePath AS STRING  
LOCAL lcFormDataField AS STRING, lcFormDataValue AS STRING  
  
* 初始化变量  
lcUrl = "http://  
lcBoundary = "VFPBoundary" + TRANSFORM(DATETIME(), 1)  
lcFilePath = "C:\path\to\your\image.jpg"  
lcFileName = JUSTFNAME(lcFilePath)  
lcFormDataField = "anotherField"  
lcFormDataValue = "SomeValue"  
  
* 读取文件内容  
lcFileContent = FILETOSTR(lcFilePath)  
  
* 构建 multipart/form-data 请求体  (重点修改代码: 这里就是图片)
lcBody = "--" + lcBoundary + CRLF  
lcBody = lcBody + "Content-Disposition: form-data; name=\"" + "file"; + "\"; filename=\"" + lcFileName + "\"" + CRLF  
lcBody = lcBody + "Content-Type: image/jpeg" + CRLF + CRLF  
lcBody = lcBody + lcFileContent + CRLF  
lcBody = lcBody + "--" + lcBoundary + CRLF  
* 重点修改代码:  这里就是表单域,对应你的json
lcBody = lcBody + "Content-Disposition: form-data; name=\"" + lcFormDataField + "\"" + CRLF + CRLF  
lcBody = lcBody + lcFormDataValue + CRLF  
lcBody = lcBody + "--" + lcBoundary + "--"  
  
* 创建 WinHttpRequest 对象  
CREATE OBJECT loHttpRequest AS "WinHttp.WinHttpRequest.5.1"  
  
* 打开连接  
loHttpRequest.Open("POST", lcUrl, FALSE)  
  
* 设置请求头  
loHttpRequest.SetRequestHeader("Content-Type", "multipart/form-data; boundary=" + lcBoundary)  
  
* 发送请求  
loHttpRequest.Send(lcBody)  
  
* 等待响应并处理  
IF loHttpRequest.Status = 200 THEN  
    ? "Response Text: ", loHttpRequest.ResponseText  
ELSE  
    ? "Error: ", loHttpRequest.Status & " " & loHttpRequest.StatusText  
ENDIF  
  
* 清理  
RELEASE loHttpRequest
2024-08-19 10:49
wcx_cc
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:52
帖 子:385
专家分:1202
注 册:2015-10-2
收藏
得分:0 
感谢楼上高手朋友!更改了上面中的非vfp 语句后,程序本身能通过,准备再放入专线实用的机子上实际测试,看看结果。原先认为图像数据流(不是字串),与json是分步传的,现在看来,可以合并共同组成一个表单数据字串。原先认为图像数据流(用ADODB.Stream,Msxml2.DOMDocument生成后只能用一个节点单独传)。再次感谢!

2024-08-19 16:38
快速回复:请教:上传文件的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020489 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved