Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
24ae11da
R
rails
项目概览
张重言
/
rails
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
rails
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
24ae11da
编写于
7月 28, 2019
作者:
P
Peter Zhu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Upload file with filename and disposition for Azure
上级
efa2299a
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
19 addition
and
2 deletion
+19
-2
activestorage/lib/active_storage/service/azure_storage_service.rb
...orage/lib/active_storage/service/azure_storage_service.rb
+4
-2
activestorage/test/service/azure_storage_service_test.rb
activestorage/test/service/azure_storage_service_test.rb
+15
-0
未找到文件。
activestorage/lib/active_storage/service/azure_storage_service.rb
浏览文件 @
24ae11da
...
...
@@ -17,10 +17,12 @@ def initialize(storage_account_name:, storage_access_key:, container:, **options
@container
=
container
end
def
upload
(
key
,
io
,
checksum:
nil
,
content_type
:
nil
,
**
)
def
upload
(
key
,
io
,
checksum:
nil
,
filename:
nil
,
content_type:
nil
,
disposition
:
nil
,
**
)
instrument
:upload
,
key:
key
,
checksum:
checksum
do
handle_errors
do
blobs
.
create_block_blob
(
container
,
key
,
IO
.
try_convert
(
io
)
||
io
,
content_md5:
checksum
,
content_type:
content_type
)
content_disposition
=
content_disposition_with
(
filename:
filename
,
type:
disposition
)
if
disposition
&&
filename
blobs
.
create_block_blob
(
container
,
key
,
IO
.
try_convert
(
io
)
||
io
,
content_md5:
checksum
,
content_type:
content_type
,
content_disposition:
content_disposition
)
end
end
end
...
...
activestorage/test/service/azure_storage_service_test.rb
浏览文件 @
24ae11da
...
...
@@ -23,6 +23,21 @@ class ActiveStorage::Service::AzureStorageServiceTest < ActiveSupport::TestCase
@service
.
delete
key
end
test
"upload with content disposition"
do
key
=
SecureRandom
.
base58
(
24
)
data
=
"Foobar"
@service
.
upload
(
key
,
StringIO
.
new
(
data
),
checksum:
Digest
::
MD5
.
base64digest
(
data
),
filename:
ActiveStorage
::
Filename
.
new
(
"test.txt"
),
disposition: :inline
)
assert_equal
(
"inline; filename=
\"
test.txt
\"
; filename*=UTF-8''test.txt"
,
@service
.
blobs
.
get_blob_properties
(
@service
.
container
,
key
).
properties
[
:content_disposition
])
url
=
@service
.
url
(
key
,
expires_in:
2
.
minutes
,
disposition: :attachment
,
content_type:
nil
,
filename:
ActiveStorage
::
Filename
.
new
(
"test.html"
))
response
=
Net
::
HTTP
.
get_response
(
URI
(
url
))
assert_match
(
/attachment;.*test\.html/
,
response
[
"Content-Disposition"
])
ensure
@service
.
delete
key
end
test
"signed URL generation"
do
url
=
@service
.
url
(
@key
,
expires_in:
5
.
minutes
,
disposition: :inline
,
filename:
ActiveStorage
::
Filename
.
new
(
"avatar.png"
),
content_type:
"image/png"
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录