请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

文件修改接口,修改文件名,是只修改FileName这个字段,而不是连location的那个位置的文件名也一起修改并且更新location字段吗

文件修改接口,修改文件名,是只修改FileName这个字段,而不是连location的那个位置的文件名也一起修改并且更新location字段吗?
我理解的文件名修改是指将

{
  "FileSha1": "a2e4bce4fb37633ec00f4bb31666329c4cf9210f",
  "FileName": "headline_notice@3x.png",
  "FileSize": 2682,
  "Location": "./uploadDir/headline_notice@3x.png",
  "UploadAt": "2019-03-20 18:20:23"
}

修改成为

{
  "FileSha1": "a2e4bce4fb37633ec00f4bb31666329c4cf9210f",
  "FileName": "newName.png",
  "FileSize": 2682,
  "Location": "./uploadDir/newName.png",
  "UploadAt": "2019-03-20 18:20:23"
}

正在回答

1回答

同学你好,Location字段可以不用修改的,对于用户来说其实这个字段是隐藏的,它只作为路径来寻找已上传的文件;用户看到的的用户名是FileName指定的,所以重命名时只需要改FileName字段就行了。
另外Location严格上应该是要具有唯一性的,比如不同的文件可能取了相同的FileName,所以我演示的代码也需要改下,改成用FileSha1来拼接Location,比如:

{
  "FileSha1": "a2e4bce4fb37633ec00f4bb31666329c4cf9210f",
  "FileName": "headline_notice@3x.png",
  "FileSize": 2682,
  "Location": "./uploadDir/headline_notice@3x.png",
  "UploadAt": "2019-03-20 18:20:23"
}

修改成:

{
  "FileSha1": "a2e4bce4fb37633ec00f4bb31666329c4cf9210f",
  "FileName": "headline_notice@3x.png",
  "FileSize": 2682,
  "Location": "./uploadDir/a2e4bce4fb37633ec00f4bb31666329c4cf9210f",
  "UploadAt": "2019-03-20 18:20:23"
}

这样只要文件上传完成后,这个Location的值就不用再进行更新,因为FileSha1是不会变的。

我稍后把代码优化下,多谢提醒!

1 回复 有任何疑惑可以回复我~
  • 提问者 杰神 #1
    我印象里面,在百度云修改了一个文件的名称,然后将文件下载到本地了之后,得到文件名的是修改之后的文件名呀。
    回复 有任何疑惑可以回复我~ 2019-03-21 08:16:39
  • 提问者 杰神 #2
    慕课网不是每门课程都有有一个qq群可以交流吗,怎么现在qq群找不到了呀
    回复 有任何疑惑可以回复我~ 2019-03-21 08:44:01
  • xiaomo 回复 提问者 杰神 #3
    现在下载接口下载下来的文件名,的确是修改后的文件名哦。这个主要是通过DownloadHandler来实现指定下载的文件名的, 可以在下载接口里参考下这行代码:
    
    w.Header().Set("content-disposition", "attachment; filename=\""+fm.FileName+"\"")
    回复 有任何疑惑可以回复我~ 2019-03-21 11:57:06
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信