使用统一 4.0
我正在尝试使用 Unity 将文件上传到 IIS 7.5 上的 ColdFusion 9 Web 服务器
IIS 返回错误 500,没有任何解释....
我打开了 IIS 失败请求跟踪规则。这让我看到从 Unity 发送到服务器的 header
Content-Length: 496473
Content-Type: multipart/form-data; boundary="ZlJady3vWV8N5mlsvGGGJ3MEbxdsDabqkUtreBBK"
Accept: */*
Expect: 100-continue
Host: www.test.com
User-Agent: UnityPlayer/4.3.0f4 (http://unity3d.com)
这是在一般请求实体部分
--ZlJady3vWV8N5mlsvGGGJ3MEbxdsDabqkUtreBBK
Content-Type: text/plain; charset="utf-8"
Content-disposition: form-data; name="frameCount"
35805
--ZlJady3vWV8N5mlsvGGGJ3MEbxdsDabqkUtreBBK
Content-Type: image/png
Content-disposition: form-data; name="file"; filename="file.png"
%89PNG
%1A
到目前为止,这一切对我来说都很好......然后我得到了一堆 包含文件数据的 GENERAL_REQUEST_ENTITY 行... Buffer %16%D9%E6%B0Ck#%E2%84I-/%EB%06%05%FB't that goes on and on
直到最后一个... 缓冲区9%97%B7'%BE%D0%AB%09%C9%AD%88%D2
然后它用 CALL_ISAPI_EXTENSION 调用 ColdFusion DLL C:\ColdFusion9\runtime\lib\wsconfig\1\jrun_iis6_wildcard.dll
然后报错:
MODULE_SET_RESPONSE_ERROR_STATUS
模块名称 IsapiModule
通知128
HTTPStatus 500
HttpReason 内部服务器错误
HttpSubStatus 0
错误代码 0
配置异常信息
通知 EXECUTE_REQUEST_HANDLER
ErrorCode 操作成功完成。 (0x0)
所以 ColdFusion 中的某些东西正在轰炸...... 浏览 ColdFusion 日志发现与原始请求无关
我尝试将相同的内容发布到旧版本的 Coldfusion 6.1,但它产生了这个错误:
500 损坏的表单数据:没有前导边界:!= --xnwss9NYfDunlkBN78LJhFHrlEDhqxHdKuXJxmjf
Unity 似乎为 IIS 7.5 生成了正确的边界值,我们可以在上面看到,但我不确定......是否应该有一个未发送的结束边界?
不幸的是,除了 IIS 7.5 失败请求日志中,我看不到 Unity 发送或服务器接收的实际数据。
我看到很多帖子,人们可以毫无问题地将文件上传到 PHP,
这是我的代码:
WWWForm form = new WWWForm();
form.AddField("frameCount", Time.frameCount.ToString());
form.AddBinaryData ( "file", Image1.EncodeToPNG());
//Hashtable myheaders = new Hashtable();
//myheaders.Add("enc-type", "multipart/form-data");
WWW w = new WWW("http://www.test.com/AuctionImages.cfm",form);
它基本上只是从似乎适用于其他服务器的示例中复制而来... 我玩过 enc-type 的传递 header ,但 WWW 应该根据文档自动执行此操作。
我尝试在 AddBinaryData 方法中传递 mime 类型
如果我删除 AddBinaryData 行,它会很好地发布到页面。
有谁知道我可以将其设置为我的帖子 URL 的网页工具,该工具会吐出从帖子收到的内容(包括标题)?
有没有人遇到过使用 Unity WWW Class 上传文件的类似问题?
谢谢! 瑞安
最佳答案
Ryan,您可能几乎已经自己解决了问题,因为 ColdFusion 可能不正确(或正确!)解释了多部分边界 header 。
您可以通过自己手动形成 header 来对此进行测试:
var form = new WWWForm();
form.AddField("name","value");
var headers = form.headers;
var rawData = form.data;
var url = "www.myurl.com";
// Add a custom header to the request:
headers["Content-Type"] = "multipart/form-data";
headers["Boundary"] = "---------------";
// Post a request to an URL
var www = new WWW(url, rawData, headers);
yield www;
//.. process results from WWW request here...
有关表单标题的更多文档 HERE .
关于http - Unity WWW Class Method Post 在 IIS7.5 上使用 Coldfusion 9 上传文件时出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20361962/