【发布时间】:2016-03-11 23:04:05
【问题描述】:
我正在尝试使用 arc 实现图片库。 我面临以下问题
- 无法一次上传多个文件(到 AWS S3)
- 可以上传小于 mb 的文件,如果我尝试大文件会出现超时错误(想知道如何上传大文件)
- 显示来自 AWS S3 的图像
上传超过 MB 的文件时出现的错误是
[error] Task #PID<0.536.0> started from #PID<0.533.0> terminating
** (stop) {:aws_error, {:socket_error, :timeout}}
(erlcloud) src/erlcloud_s3.erl:911: :erlcloud_s3.s3_request/8
(erlcloud) src/erlcloud_s3.erl:611: :erlcloud_s3.put_object/6
(arc) lib/arc/storage/s3.ex:9: Arc.Storage.S3.put/3
(elixir) lib/task/supervised.ex:74: Task.Supervised.do_apply/2
(elixir) lib/task/supervised.ex:19: Task.Supervised.async/3
(stdlib) proc_lib.erl:240: :proc_lib.init_p_do_apply/3
Function: #Function<2.64561725/0 in Arc.Actions.Store.async_put_version/3>
Args: []
[error] Ranch protocol #PID<0.533.0> (:cowboy_protocol) of listener Pxblog.Endpoint.HTTP terminated
** (exit) an exception was raised:
** (ErlangError) erlang error: {:aws_error, {:socket_error, :timeout}}
(erlcloud) src/erlcloud_s3.erl:911: :erlcloud_s3.s3_request/8
(erlcloud) src/erlcloud_s3.erl:611: :erlcloud_s3.put_object/6
(arc) lib/arc/storage/s3.ex:9: Arc.Storage.S3.put/3
(elixir) lib/task/supervised.ex:74: Task.Supervised.do_apply/2
(elixir) lib/task/supervised.ex:19: Task.Supervised.async/3
(stdlib) proc_lib.erl:240: :proc_lib.init_p_do_apply/3
我正在关注arc upload 库
以下是控制器的创建函数
def create(conn, %{"post" => post_params, "images" => images_params}) do
changeset = Post.changeset(%Post{}, post_params)
case Repo.insert(changeset) do
{:ok, _post} ->
images = images_params
current_user = %{id: 1}
Enum.count(images, fn(image) -> Image.store({image, current_user}) end)
conn
|> put_flash(:info, "Post created successfully.")
|> redirect(to: post_path(conn, :index))
{:error, changeset} ->
render(conn, "new.html", changeset: changeset)
end
end
Arc 库提供了一个方法 MyApp.Avatar.url() 但是当我尝试在显示模板中调用它时,例如 MyApp.Avatar.url(@user.avatar , @user) 表示函数未定义。
【问题讨论】:
-
首先将您目前掌握的有关这些问题的所有代码放入其中,然后人们将能够为您提供答案。