gpt4 book ai didi

coldfusion - 如何使用文件参数获取 CFHTTP 以仅显示文件名而不是完整路径?

转载 作者:行者123 更新时间:2023-12-03 16:24:21 25 4
gpt4 key购买 nike

我们正在尝试与需要文件的 RESTful Web 服务进行交互。

我将字段的名称设置为 data(根据 API 的要求),然后将文件指定为绝对路径。当文件到达服务器时,HTTP 事务中的文件名是完整的绝对路径。

这会导致 API 出现问题,因为完整路径随后被记录为“文件名”。

如何让 ColdFusion 只报告文件名而不是完整路径?

我们正在使用 ColdFusion 9。

这是 CFML:

<cfhttp url="http://server/testcode"
port="9876"
method="post"
result="Content">

<cfhttpparam type="file"
name="data"
file="c:\temp\testfile.txt">
</cfhttp>

以下是 HTTP 与不同浏览器交互的一些示例:

CFHTTP 9
-------------------------------7d0d117230764
Content-Disposition: form-data; name="data"; filename="c:\temp\testfile.txt"
Content-Type: text/plain

This is the text, really long, well, not really.

-------------------------------7d0d117230764--



IE8
-----------------------------7db370d80e0a
Content-Disposition: form-data; name="FileField"; filename="C:\temp\testfile.txt"
Content-Type: text/plain

This is the text, really long, well, not really.
-----------------------------7db370d80e0a--


Chrome 13
------WebKitFormBoundaryDnpFVJwCsZkzTGDc
Content-Disposition: form-data; name="FileField"; filename="testfile.txt"
Content-Type: text/plain

This is the text, really long, well, not really.

Firefox 6
-----------------------------22798303036224
Content-Disposition: form-data; name="FileField"; filename="testfile.txt"
Content-Type: text/plain

This is the text, really long, well, not really.
-----------------------------22798303036224--

显然 IE8 和 CFHTTP 都做同样的事情(在文件名中添加“c:\temp”)。我不确定 HTTP 的规范是什么,但如果有办法让 CFHTTP 关闭路径,那就太好了。

有没有办法做到这一点?

最佳答案

我曾经遇到过与您类似的问题。我不在乎排除路径,但我想发送与服务器文件系统上的文件名不同的文件名。我根本找不到使用 CF 标记的方法,但我可以通过放入 Java 来让它工作。我使用了 CF9 IIRC 附带的 org.apache.commons.httpclient。它是这样的(请原谅任何拼写错误,我正在从更复杂的代码中转置):

oach = 'org.apache.commons.httpclient';
oachmm = '#oach#.methods.multipart';
method = createObject('java', '#oach#.methods.PostMethod').init(post_uri);
filePart = createObject('java', '#oachmm#.FilePart').init(
'fieldname',
'filename',
createObject('java', 'java.io.File').init('filepath')
);
method.setRequestEntity(
createObject('java', '#oachmm#.MultipartRequestEntity').init(
[ filePart ],
method.getParams()
)
);
status = createObject('java', '#oach#.HttpClient').init().executeMethod(method);
method.releaseConnection();

关于coldfusion - 如何使用文件参数获取 CFHTTP 以仅显示文件名而不是完整路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7400748/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com