我有一个Api,它要求我在发送实际文件之前发送文件的字节大小。当我在第一个Api调用中对要发送的文件调用file.length()
时,它将返回1996
。
val requestBody = RequestBody.create(
MediaType.parse("image/jpeg"),
avatarFile)
return authService.updateAvatar(
AvatarMetadataRequest(
size = avatarFile.length().toInt(),
crc = profileImageProvider.getFile()!!.checksum()!!.toInt()))
val avatarFile = profileImageProvider.getFile()
val requestBody = RequestBody.create(
MediaType.parse("image/jpeg"),
avatarFile)
return authService.uploadAvatar(
id.split("/").last(),
MultipartBody.Part.createFormData("avatar",
profileImageProvider.getFileName(),
requestBody))
结果证明RequestBody
的ContentLength()
是正确的。因此,在调用MultipartBody.part.CreateFormData
时,必须修改或增加Content-Length
。
这似乎是一个错误的部分化身上传API。头像是以多部分数据的形式上传的,因此永远不会等于原始文件的大小。这是因为多部分请求除了文件之外还会有其他数据。
下面是一个多部分请求示例:
--------------------------0b880724ca8aacd6
Content-Disposition: form-data; name="file1"; filename="test.txt"
Content-Type: text/plain
test test test
--------------------------0b880724ca8aacd6--
如您所见,文件的内容只是test test test
。其他一切都是由多部分请求添加的附加数据。
因此,avatar上传API不应该只是检查整个请求的内容长度,而是提取与文件相关的特定部分,并检查该部分包含的数据大小。
如果您无法控制化身上传API的行为,那么您可以通过计算多部分请求增加的开销的总大小并将其添加到您的文件大小中来计算总内容长度。
问题内容: 我正在尝试使用连接服务器,但是PUT方法存在问题。 我需要发送一个包含 1500个字符 (或更多)的字符串,但是在这种情况下,服务器会产生超时并返回 500个服务器内部错误 。 如果我发送的字符串少于 1400个字符 ,则没有问题,服务器返回 OK 。 我的代码如下: // ----------------------- 我尝试添加线 但是服务器的答案还是错误的。 更新: 我可以发现问
问题内容: 我需要一个textarea,在框中输入文字,它会根据需要增加长度,以避免必须处理滚动条,并且在删除文本后需要缩小!我不想沿着mootools或jquery路线走,因为我有一个轻量级的表单。 问题答案: 您可以通过设置为,然后读取属性来检查内容的高度: 它可以在Firefox 3,IE 7,Safari,Opera和Chrome下运行。
问题内容: 我已经将我的Elasticsearch集群从1.1升级到1.2,并且在索引一个较大的字符串时出现错误。 索引的映射: 我搜索了文档,但没有找到与最大字段大小有关的任何内容。根据核心类型部分,我不明白为什么要为某个字段“校正分析仪” 。 问题答案: 因此,您遇到了一个术语的最大大小问题。当您将一个字段设置为not_analyzed时,会将其视为一个术语。基本Lucene索引中单个术语的最
问题内容: (正确的代码在“更新5”中) 在此示例C代码中,我尝试将内存范围从0x100000000映射到0x200000000: 在不同的系统(Linux,gcc)上,我得到不同的结果: 结果1: 系统信息(Fedora 14): 结果2: 系统信息(Fedora 12): 我期望“结果2”。也许我的代码有问题。 请帮帮我。 更新1 :如果mmap失败,则打印出errno。 更新3 :将mmap
问题内容: 当我尝试过时如何设置可以使用swift输入到UITextField中的最大字符数?,我看到如果我全部使用10个字符,我也无法删除该字符。 我唯一能做的就是取消该操作(一起删除所有字符)。 有谁知道如何不遮挡键盘(以便我不能添加其他字母/符号/数字,但可以使用退格键)? 问题答案: 对于Swift 5和iOS 12,请尝试以下协议实现方法的实现: 该代码最重要的部分是从()到()的转换。
配置最大长度为数据存储提供了有关示意,示意其为给定属性使用合适的数据类型。最大长度仅被应用于数组数据类型,比如 string 和 byte[]。 注意 Entity Framework 在将数据传递给数据库提供程序之前不会做最大长度验证。是否合适是由数据库提供程序或数据储存验证的。比如,使用的是 SQL Server 时,超出最大长度将由于底层数据列的数据类型不允许数据超出而导致异常。 惯例 按照